пакетно изтриване с променлива на директория - 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