2016-09-07 27 views
0

我使用下面的批处理文件删除多个驱动器上的不需要的文件。带目录变量的批量删除 - 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,全部.txt看起来是这样的:

mydirectory 
TEST.xlsx 
TEST2.xlsx 

这个伟大的工程。它删除单个目录中的文件。但现在我需要它做更多。我需要批处理文件来删除不同目录中的文件。所以,它归结为如何即时更改目录。

任何帮助将不胜感激。

+2

您希望我相信扩展为'@del/q“D:\ HFI \ D:\ mydirectory \ D:\ mydirectory”'的命令有效吗? – SomethingDark

+0

谢谢。纠正。 – joehua

+0

你可能想看看[在此](http://stackoverflow.com/questions/38911430/rename-files-using-wildcard-paths/38941888#38941888)。你可以放入目录/文件名(包括通配符)并用该代码重命名它们。只需将'ren'改为'del',它就可以满足您的需求。这是相当大的,但它对我很好。请注意最后的注释/排除子文件夹。 – geisterfurz007

回答

0

答案结果比我想象的要容易。虽然我最初的问题是删除文件,但我已经为重命名工作。它应该适用于删除,修改很少。

@(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 \”作为路径前缀更改为相应的目录。否则,它假定该行包含文件名。由于文件名中不允许反斜杠,因此假设是安全的。

希望这会帮助其他人。

0

我在这里回答你,因为我现在不能评论我的低信誉。

我强烈建议使用PowerShell或Python或其他程序脚本来做到这一点。使用Windows批处理会花费更多的时间来找到一个好方法,而且可能无法做到这样一个复杂的misson。