Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Сравнение конечного количества файлов с начальным

Ответить
Настройки темы
CMD/BAT - Сравнение конечного количества файлов с начальным

Новый участник


Сообщения: 20
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день. я написал батник который обрабатывает файлы , после каждой обработки у файла появляется опроеделенный префикс соответвующий этапу обработки, если в какой то момент произошла ошибка обработки то он уже не поулчит нужный префикс и соответвенно не будет учавствовать в последующей обработки и в конце файлов которые прошли несколько ступеней обработки может быть меньше чем начальное количество. соответвсенно у меня вопрос как получить список тех файлов которые есть в начале но которых нет в конце обработки.
я так понимаю что начале можно записать файлы в лог
Код: Выделить весь код
set log=%CD%\logfile.log
for /f "delims=" %%d in ('dir/b/od "%FILEPATH%\%FILEMASK0%"') do (>>%log% echo %%~nd )
а дальше что нужно делать?

Отправлено: 15:35, 13-12-2016

 

Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off
set "d=papka"& set "rf=dwg"
set "d_out=out"& set "err=error"
if not exist "%d_out%" md "%d_out%"
if not exist "%err%" md "%err%"
dir/a-d/b/o-d/tc "%d%"|set/p name=^& cmd/v/c echo !name!^|^>nul find "___555___" ^&^& cmd/v/c move "%d%\!name!" "%d_out%\new.%rf%" ^|^| cmd/v/c move "%d%\!name!" "%err%\new.%rf%"
pause
set "d=papka"
"papka" - основная папка со всеми файлами.

Отправлено: 19:59, 23-12-2016 | #31



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


composter,
Вот решение под Вашу новую постановку
Код: Выделить весь код
@Echo Off
cls

chcp 1251 >nul

Set "Pgm=C:\Program Files\Autodesk\AutoCAD 2014\accoreconsole.exe"
rem Set "Pgm=Z:\Test\test3.bat" 

Set "In=%CD%"
Set "MaskIn="%In%\*.dwg" "%In%\*.dxf""

Set "Pref1=___111___"
Set "Pref2=___222___"
Set "Pref3=___333___"
Set "Pref4=___444___"
Set "Pref5=___555___"

Set "OutBox=%In%\_Box_Out"
Set "TmpBox=%In%\_Box_Tmp"
Set "ErrBox=%In%\_Box_Err"

md "%OutBox%" 2>nul
md "%TmpBox%" 2>nul
md "%ErrBox%" 2>nul

Set "Scr1=puandau1.scr"
Set "Scr2=todxf.scr"
Set "Scr3=todwg.scr"
Set "Scr4=puandau2.scr"

FOR %%s IN ("%Scr1%" "%Scr2%" "%Scr3%" "%Scr4%") DO Copy "%In%\%%s" "%TmpBox%\" >nul

Set "ErrLog=%Date%-%Time%"
Set "ErrLog=%ErrLog::=_%"
Set "ErrLog=%ErrLog:/=_%"
Set "ErrLog=%ErrBox%\~%ErrLog:,=.%_Err.Log"

FOR %%f IN (%MaskIn%) DO (
	Call :DelAll "%%f"

	Copy "%%f" "%ErrBox%\" >nul
	Move /Y "%%f" "%TmpBox%\%Pref1%%%~nxf" >nul

	Call :Job "%TmpBox%\%Pref1%%%~nxf" "%TmpBox%\%Scr1%" "%TmpBox%\%Pref2%%%~nxf" "%%f"
	Call :Job "%TmpBox%\%Pref2%%%~nxf" "%TmpBox%\%Scr2%" "%TmpBox%\%Pref3%%%~nxf" "%%f"
	Call :Job "%TmpBox%\%Pref3%%%~nxf" "%TmpBox%\%Scr3%" "%TmpBox%\%Pref4%%%~nxf" "%%f"
	Call :Job "%TmpBox%\%Pref4%%%~nxf" "%TmpBox%\%Scr4%" "%TmpBox%\%Pref5%%%~nxf" "%%f"

	If Exist "%TmpBox%\%Pref5%%%~nf.*" (
		FOR %%s IN ("%TmpBox%\%Pref5%%%~nf.*") Do Move /Y "%%s" "%OutBox%\%%~nxf"
		Del "%ErrBox%\%%~nxf" 2>nul
	)
)

FOR %%s IN ("%Scr1%" "%Scr2%" "%Scr3%" "%Scr4%") DO Del "%TmpBox%\%%s" 2>nul
GoTo :Eof

:DelAll
	Del "%TmpBox%\%~n1.*" 2>nul
	Del "%OutBox%\%~nx1" 2>nul

	Del "%TmpBox%\%Pref1%%~n1.*" 2>nul
	Del "%TmpBox%\%Pref2%%~n1.*" 2>nul
	Del "%TmpBox%\%Pref3%%~n1.*" 2>nul
	Del "%TmpBox%\%Pref4%%~n1.*" 2>nul
	Del "%TmpBox%\%Pref5%%~n1.*" 2>nul
GoTo :Eof

:Job
	If Exist "%~dpn1.*" (
		FOR %%i IN ("%~dpn1.*") DO (
			Call "%Pgm%" /i "%%i" /s %2 /l en-US
		)
		If Exist "%~dpn3.*" (
			Del "%~dpn1.*"
		) Else (
			Move /Y "%~dpn1.*" "%ErrBox%\" >nul
			Echo ----- Исходный файл %4 от %~t1  %~z1b не обработан.>>"%ErrLog%"
			Echo                     перемещен "%ErrBox%\%~nx4" >>"%ErrLog%"
			Echo                               "%ErrBox%\%~nx1" >>"%ErrLog%"
			Echo -------------------------------------------------------------------->>"%ErrLog%"
		)
	)

1. Исходные файлы, .scr файлы помещаются в папку с батником
2. При нормальной обработке обработанные файлы с именами исходных помещаются в папку OutBox
3. При неуспешной обработке исходный файл и последний из имеющихся промежуточных файлов помещаются в папку ErrBox.
Сообщение о неуспешной обработке записывается в лог-файл с именем даты-времени обработки.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 24-12-2016 в 20:52.


Отправлено: 20:45, 24-12-2016 | #32


Новый участник


Сообщения: 20
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: log ~09_01_2017-12_57_47.00_Err.Log
(281 байт, 1 просмотров)

если ошибок среди файлов нет, то все проходит на ура!!!!
если же есть ошибка то в папке остается файл и файл с перфиксом и лог файл. можно сделать так чтобы файл с префиксом тоже удалялся.
и еще можно в конце (после всех операции с файлами) добавить удаление файлов *.dwg и *.dxf из исходной папки (где они изначально находились) (без подпапок), а то в процессе ошибки в некоторых случаях сохраняется кривой файл в папке запуска батника, который нафиг не нужен
лог на всякий случай прикладываю

Отправлено: 13:10, 09-01-2017 | #33


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


composter, не прошло и полгода ...

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 15:20, 09-01-2017 | #34



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Сравнение конечного количества файлов с начальным

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - Подсчет количества ini файлов в папке XXXp Скриптовые языки администрирования Windows 14 10-04-2012 02:06
CMD/BAT - [решено] Счетчик количества файлов Arsenik77 Скриптовые языки администрирования Windows 1 28-08-2011 11:13
CMD/BAT - Перемещение в папку определенного количества файлов Arsenik77 Скриптовые языки администрирования Windows 1 18-07-2011 17:11
Интерфейс - [решено] Переименование большого количества файлов 7human7 Microsoft Windows 2000/XP 7 22-11-2008 09:48
Проблема с начальным пакетом... markizzz Хочу все знать 2 12-10-2003 18:46




 
Переход