поиск и удаление дубликатов в нескольких подкаталогах

#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"