#batch-file #find #directory-structure
#пакетный файл #Найти #структура каталогов
Вопрос:
как я могу расширить следующий пакетный код, чтобы все в папке Tim проверялось на соответствие всем папкам в каталоге Tom.
Бетер сказал, что если у Тима есть файл с именем Mytext.txt в нем, как я могу проверить все, а не только верхний каталог, начиная с C:Tom , может быть, в tom есть другая папка с другой папкой, в которой еще раз с Mytext.txt в нем.
Весь приведенный ниже код в настоящее время используется для проверки только определенного каталога, который я также хотел бы проверить через любые подкаталоги?
for /r "C:Tim" %%f in (*) do if exist "C:Tom%%~nxf" del /s /q "C:Tim%%~nxf"
Ответ №1:
У вас почти получилось, вам нужен только второй FOR /R
цикл, чтобы выполнить поиск во всех подразделах ТОМА
for /r "c:tim" %%I in (*) do (
echo searching for %%~nxI
for /r "C:tom" %%O in (%%~nxI) do (
if exist %%O echo found in %%O
)
)
Комментарии:
1. Мне жаль, что я проверил это (переписал echo, чтобы вместо этого отобразить удаление), но у меня это не сработало. для /r «c:tim » %%я в (*) делаю ( эхо-поиск %% ~ NXi для / r «C:tom » %%O in (%% ~ NXi) do (если существует %%O del / s / q «C:Tim%%O » ) )
2. Сначала проверьте, показывает ли оператор echo правильные значения. Поскольку вы
del /s /q "C:tim%%O
не можете работать, поскольку это добавило бы в два раза больше пути, напримерdel /s /q C:timC:timsubdirmyFile.txt
3. @Bart Кстати. лучше отредактировать свой пост, чем помещать много кода в комментарий
4. Если вы хотите удалить только все файлы с именем try
del /s /q "%%~nx"
, а не ~f , иначе вы снова получите полный путь. Кстати, всегда полезно добавлять операторы echo в тех случаях, когда код завершается с ошибкой, напримерecho del /s /q "C:Tim%%O"