![]() |
Реализация условия в цикле
Здравствуйте, помогите пожалуйста, весь день парюсь не могу сообразить...
Имеется код для поиска и удаления файла по маске с запросом, все работает, ищет, удаляет. При исполнении пакетного файла должен сформироваться текстовый файл с результатом в виде Deleted (столько-то) files in directory (путь), и так столько строк, сколько было путей к файлам. В файл пишется такая строка, когда путь меняется, т.е. мы переходим к следующей директории. Проблема в том, что условие if в цикле верно при каждой итерации цикла for и каждый раз при нахождении файла, который надо удалить, в файл отчета пишется Deleted 0 files in directory, т.е. переменные не распознаются. Подскажите пожалуйста, что делать? Скрытый текст
setlocal enabledelayedexpansion
echo Result > C:\Result.txt set x=0 set /P maska="Vvedite masky:" for %%d in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do ( if exist "%%d:\*" ( for /f "delims=" %%f in ('2^>nul dir /a-d/b/s "%%d:\%maska%"') do (set z2="%%~dpf%" if x==0 (set z1="%%~dpf%") if !z2! NEQ !z1! (>>C:\Result.txt echo Deleted !x! files in directory !z1! && set x=0 && set z1="%%~dpf%") del /P "%%f" if not exist "%%f%" (set /a x=x+1)) ) ) pause О том, что последняя директория не запишется, я знаю, это предусмотрю после цикла |
Roman_Norther@vk, ИМХО, загвоздка в if !x!==0
Надо !x! Мне не нравится конструкция "%%~dpf Последний % лишний Я бы предпочёл написать set /a x+=1 или set /a x=!x!+1 Мой вариант Вашей задачи, здесь меньше всяких If, труднее погрязнуть в логике
Код:
@Echo Off |
Спасибо огромное! Все работает!
|
Время: 21:55. |
Время: 21:55.
© OSzone.net 2001-