批处理脚本删除文件


96

我有一个如下的批处理脚本。

D:
del "D:\TEST\TEST1\Archive\*.TSV" 
del "D:\TEST\TEST1\Archive\*.TXT"
del "D:\TEST\TEST2\Archive\*.TSV" 
del "D:\TEST\TEST2\Archive\*.TXT"
del "D:\TEST\TEST 100%\Archive\*.TSV" 
del "D:\TEST\TEST 100%\Archive\*.TXT"

上面的代码从文件夹中删除所有文件夹中的所有“ .txt”和“ .tsv”文件TEST 100%。为了从中删除文件,TEST 100%我得到错误为The Path could not be found。我想文件夹名称中的%符号会引起问题。谁能指导我解决问题并从文件夹中删除文件TEST 100%


为什么第一行有报价?另外,当批处理文件已更改为第一行时,为什么还要引用该驱动器?我尝试复制您的问题,一切正常。您是否确认测试100%中存在存档?
RonaldBarzell

Answers:


112

您需要使用另一个转义%...

del "D:\TEST\TEST 100%%\Archive*.TXT"

我不能代表OP,但是在我的系统上,找到带有%的路径没有问题,而%%的转义使系统无法找到它。
RonaldBarzell

@ user1161318-我确实在Windows 7上对其进行了测试。如果不进行转义,则在批处理文件中会导致“系统找不到指定的路径”。当我发布它的作品。
Russ Freeman

好的,在XP上我得到相反的结果。它使用%可以找到路径,但是无法使用%%来找到它。
RonaldBarzell

5
我的猜测是您是从命令提示符而不是从批处理文件执行此操作的。
Russ Freeman

2
你也许是对的。我一直忘记,在批处理文件中,%是变量前缀,您需要对其进行转义。+1
RonaldBarzell

12

批量处理有多种方法,因此,如果%%无法以两倍的百分比进行转义对您不起作用,则可以尝试执行以下操作:

set olddir=%CD%
cd /d "path of folder"
del "file name/ or *.txt etc..."
cd /d "%olddir%"

工作原理:

set olddir=%CD%将变量"olddir"或您喜欢的任何其他变量名设置为启动批处理文件的目录。

cd /d "path of folder"更改批处理将要查看的当前目录。保留报价单并将文件夹的路径更改为目标路径。

del "file name/ or *.txt etc..."会删除您的批处理正在查看的当前目录中的文件,只是不要在文件名前添加目录路径,而只是具有完整的文件名,或者删除具有相同扩展名*.txt或所需扩展名的多个文件。

cd /d "%olddir%"接受使用旧路径保存的变量,并返回到您开始使用批处理的目录,如果您不希望批处理返回其先前的目录路径,则不重要,就像在将变量名更改为之前所声明的那样无论您希望通过更改set olddir=%CD% line


最好通过来完成pushd "folder" && del "filename" & popd
NunoAndré19年

10

假设您将软件保存到桌面上。
如果要删除整个文件夹(如卸载程序),则可以使用此文件夹。

cd C:\Users\User\Detsktop\
rd /s /q SOFTWARE

这将删除名为software的整个文件夹及其所有文件和子文件夹

确保您删除正确的文件夹原因这没有一个是/否选项



-7

在批处理代码中,您的路径不应包含任何空格,因此请将文件夹名称从“ TEST 100%”更改为“ TEST_100%”,新代码将为del“ D:\ TEST \ TEST_100%\ Archive * .TXT”

希望这能解决您的问题


6
从来没有听说过。那是新的吗?-疯了。只要您将其设置在引号中,它就可以处理空格,就像没有空格一样。
Blacktempel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.