пакетное удаление с переменной каталога - Windows 7

Я использую следующий командный файл для удаления ненужных файлов на нескольких дисках.

set /p DELPATH=<"C:\DELETE-ALL.txt" 

for /f "usebackq delims=;" %%i in ("C:\DELETE-ALL.txt") do @del /q "D:\HFI\%DELPATH%\%%i" > C:\DELETE-ALL-4.txt 2>&1
... same command for other local and network drives.

DELETE-ALL.txt выглядит так:

mydirectory
TEST.xlsx
TEST2.xlsx

Это прекрасно работает. Он удаляет файлы в одном каталоге. Но сейчас мне нужно больше. Мне нужен пакетный файл для удаления файлов в разных каталогах. Итак, все сводится к тому, как изменить каталог на лету.

Любая помощь будет оценена.


person joehua    schedule 07.09.2016    source источник
comment
Вы ожидаете, что я поверю, что команда, расширяющаяся до @del /q "D:\HFI\D:\mydirectory\D:\mydirectory", работает?   -  person SomethingDark    schedule 07.09.2016
comment
Спасибо. Исправлено.   -  person joehua    schedule 07.09.2016
comment
Вы можете посмотреть это. Вы можете указать имена каталогов/файлов (включая подстановочные знаки) и переименовать их с помощью этого кода. Просто измените ren на del, и это должно подойти для вашей цели. Он довольно большой, но он отлично работает для меня. Обратите внимание на комментарий в конце для включения/исключения подпапок.   -  person geisterfurz007    schedule 07.09.2016
comment
Спасибо. Большинство команд в этом файле выше моего понимания. Я посмотрю, чему я могу научиться из этого.   -  person joehua    schedule 07.09.2016


Ответы (2)


Я отвечаю вам здесь, потому что я не могу комментировать сейчас с моей более низкой репутацией.

Я настоятельно рекомендую для этого использовать PowerShell или python или другие программные скрипты. Используя пакет Windows, вам потребуется больше времени, чтобы найти хороший способ, и может не быть возможности выполнить такую ​​​​небольшую сложную миссию.

person findmyway    schedule 07.09.2016

Ответ оказывается проще, чем я думал. Хотя мой первоначальный вопрос был об удалении файлов, я заставил его работать для переименования. Он должен работать для удаления с небольшими изменениями.

 @(for /f "tokens=1,2 delims=;" %%A in ('"TYPE C:\RENAME-ALL.txt"') do (
 @echo "%%A" | find /i "\" 
  @if errorlevel 1 (
  RENAME "%%A" "%%B" >> C:\RENAME-ALL-4.txt 2>&1
  ) ELSE (
 CD /D D:\mydirectory\%%A
  )
 )
 )

Скрипт ищет "\". Если найдено, предполагается, что строка является каталогом, и изменяется на соответствующий каталог с "D:\mydirectory\" в качестве префикса пути. В противном случае предполагается, что строка содержит имя файла. Поскольку в имени файла запрещена обратная косая черта, предположение безопасно.

Надеюсь, это поможет другим людям.

person joehua    schedule 12.09.2016