Как я могу написать командный файл, который удалит все файлы, которые существуют в другом каталоге? - PullRequest
1 голос
/ 20 сентября 2011

Я хочу написать командный файл, который удалит перекрытие файлов между двумя папками.

Другими словами, я хочу сказать «Удалить из папки A все файлы, которые также появляются в папке B».

С точки зрения SQL это будет что-то вроде

DELETE FROM FOLDERA WHERE EXISTS(SELECT FILE FROM FOLDERB)

, но я хочу добиться этого в файловой системе Windows.

Ответы [ 3 ]

1 голос
/ 21 сентября 2011
SET if_it_exists_here=C:\folderB
SET then_delete_it_there=C:\folderA
CD "%if_it_exists_here%"
FOR %%A IN (*.*) DO (
 IF EXIST "%then_delete_it_there%\%%~nxA" DEL /Q /F %then_delete_it_there%\%%~nxA
)
1 голос
/ 20 сентября 2011

Отвечая на мой вопрос:

set if_it_exists_here=C:\folderB
set then_delete_it_there=C:\folderA
cd "%if_it_exists_here%"
FOR /F "tokens=*" %%G IN ('dir *.* /b /a:-d') DO del "%then_delete_it_there%\%%G"
0 голосов
/ 27 сентября 2011

Основываясь на ответе Mechaflash, вот версия, которая работает с путями UNC.

SET if_it_exists_here=\\server1\some\folder
SET then_delete_it_there=\\server2\some\folder
CD "%if_it_exists_here%"
FOR %%A IN ("%if_it_exists_here%\*.*") DO (
 IF EXIST "%then_delete_it_there%\%%~nxA" DEL /Q /F %then_delete_it_there%\%%~nxA
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...