批量删除与目录变量- 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

这个效果很好。删除单个目录下的文件。但现在我需要它做更多的事情。我需要批处理文件删除文件在不同的目录。因此,它归结为如何动态地更改目录。

我在这里回答你,因为我现在无法评论我的声誉。

我强烈建议使用PowerShell或python或其他程序脚本来完成此操作。使用windows批处理,你会花更多的时间来找到一个好的方法,可能没有办法做这样一个小复杂的任务。

答案比我想象的要简单。虽然我最初的问题是关于删除文件,但我让它用于重命名。

 @(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
  )
 )
 )

脚本查找""。如果找到,它假设line是一个目录,并以"D:mydirectory"作为路径前缀切换到相应的目录。否则,它假定该行包含文件名。由于文件名中不允许使用反斜杠,因此假设是安全的。

最新更新