Roman_Norther@vk
25-11-2017, 17:06
Здравствуйте, помогите пожалуйста, весь день парюсь не могу сообразить...
Имеется код для поиска и удаления файла по маске с запросом, все работает, ищет, удаляет. При исполнении пакетного файла должен сформироваться текстовый файл с результатом в виде 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
О том, что последняя директория не запишется, я знаю, это предусмотрю после цикла
Имеется код для поиска и удаления файла по маске с запросом, все работает, ищет, удаляет. При исполнении пакетного файла должен сформироваться текстовый файл с результатом в виде 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
О том, что последняя директория не запишется, я знаю, это предусмотрю после цикла