Имя пользователя:
Пароль:
 

Показать сообщение отдельно

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


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

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


Полная задача выглядит так:

В исходной директории с:\365-P\First хранятся запросы 123*.txt, разбросанные по папкам по следующей структуре
C:\365-P\First\Out\2012\01\10 (C:\365-P\YYYY\MM\DD)

Пользователь "ручками" отправляет документ 123*.txt на проверку. Файлы 123*.txt проходят проверку и сваливаются в виде ответов в одну папку без структуры c:\365-P\For_check\.

Отбор файлов происходит по одной строке "20@@@" внутри каждого KWTFCB_*.txt. Если строка присутствует в файле, то он падает в папку c:\365-P\For_check\Done. Если такой строки нет, то c:\365-P\For_check\Error.

Используя часть чужого кода, создал следующее:

cd For_check

findstr /l /m /x /c:20@@@ >>baselist.ext *.txt

Set List=baselist.ext
Set Dst=C:\365-P\For_check\done

if not exist %List% (
echo List-file not found!
exit 1
)
Set log="%~dpn0.log"
Set tmp="%~dpn0.tmp"
Set wrk="%~dpn0.lst"

echo ======= %date% %time:~0,8% =======>>%log%
del /f %wrk% 2>nul
dir /a /b /on /s>%tmp%
for /f "usebackq tokens=* delims=" %%F in ("%List%") do findstr /c:"%%F" %tmp%>>%wrk%
for /f "usebackq tokens=* delims=" %%F in (%wrk%) do (
copy /b /y "%%F" "%Dst%" >nul 2>nul
del /q "%%F"
if errorlevel 1 (echo Can`t copy %%F to "%Dst%">>%log%) else (echo File %%F copied>>%log%)
)

del /f %tmp%
del /f %wrk%
del /f %log%
del /q baselist.ext

move *.txt Error
cd Error
dir /b >> c:\365-P\For_check\errorlist.ext

Тело кода позаимствовал. Понял только как задать переменную. А вот все, что творит батник от команды "findstr" до "move" мне не понятно.

После этого начинается вторая часть задачи. Найти "пару" для каждого неверного ответа (где отсутствует строка 20@@@) и выгрузить оба файла в одну директорию.

Iska, попробовал Ваш код, но не могу разобраться, дабы подбить батник под свои цели. Но все равно спасибо.

Подскажите, что означает %слово% заключенное в проценты? 2>nul?

Отправлено: 14:01, 15-02-2012 | #7