Поиск файла с похожим именем
Добрый день
Слабо еще знаком с команадми Прошу Вашей помощи в решении рабочей задачки Есть файл (KWTFCB_123.txt) в начале имени которого присутствует всегда один и тот же набор символов "KWTFCB", нумерация соответственно меняется. Это ответ на ранее посланный файл 123.txt. В виду того, что количество этих сообщений огромно. Необходимо сделать батник, который будет брать за основу KWTFCB_123.txt и находить его пару 123.txt в другой директории. Спасибо. |
Найти элементарно, но зачем? Что потом с этой парой файлов делать? А что делать, если соответствие не найдено? Какую утилитарную задачу Вы хотите решить?
|
unw1ck3d, например, так:
Код:
@echo off Код:
0001.cmd "E:\Песочница\0117\0002\KWTFCB_123.txt" "E:\Песочница\0117\0001" |
megaloman, прошу меня простить, умолчал
задача сводиться к тому, что при успешном нахождении пары файлов выкидывать оба *.txt в третью директорию. Если же соответствие не найдено, то ничего не делать. Причем KWTFCB_123.txt лежат все в одной директории, а поиск 123.txt происходит в многоуровневой директории. Как можно производить поиск 123.txt в директории по всем папкам данной директории? На самом деле задача еще больше. Первую часть мне удалось решить, а вот со второй частью справиться не хватило знаний. Команда help и все "вытекающие" мне не ясны. Прошу Вас подсказать с какой литературой ознакомиться. Не могу понять операции с переменными. На тот вопрос, который я задал Вам, мне предлагали решить задачу на C#. Iska, спасибо за помощь!!! Есть еще один вопрос. Есть ли возможность в батниках делать запрос на ввод с клавиатуры, для того, чтобы именовать файлы? Спасибо. |
unw1ck3d, да, можно.
Код:
Set /P Var=Enter filename: ^> Ещё можете почитать Set /? |
Вариант1
Код:
@Echo Off Код:
@Echo Off |
Полная задача выглядит так:
В исходной директории с:\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? |
Цитата:
|
unw1ck3d, обычно слово заключенное в "проценты" - это переменная. То есть:
Простой пример... Есть такая переменная - date - она, по умолчанию, равна текущей дате... Echo date даст на выход слово "date" а вот echo %date% в моем случае, на момент написания сообщения даст результат "17.02.2012" и, для примера... set segod=segodnya %date% Это мы создаем переменную "segod" со значением равным слову segodnya и, через пробел, текущей дате... То есть Echo %segod% на выходе даст "segodnya 17.02.2012", только без кавычек... Обычно так... про другие случаи я не знаю :) |
Помогите пожалуйста...
есть путь %PROGRAMFILES(X86)%\Kaspersky Lab\Kaspersky Free 18.0.0 версия (18.0.0) может бит 19.0.0 или 20.0.0 как определить версию и вести в Код:
set version= |
Komoliddin_Fuzaylitdinov@fb, а что в реестре?
|
Komoliddin_Fuzaylitdinov@fb,
Если ориентироваться на имя папки
Код:
@Echo Off |
Время: 22:00. |
Время: 22:00.
© OSzone.net 2001-