gpt4 book ai didi

windows - 当路径包含空格时,如何使用通配符从 MS DOS 批处理文件中删除多个文件?

转载 作者:可可西里 更新时间:2023-11-01 10:27:10 26 4
gpt4 key购买 nike

假设我有一个包含以下文件的目录:

测试.bat测试a.txt测试_b.txtTest_v1.zipTest_v2.zipTest_v3.zip

我想安静地删除所有 Test_v*.zip(没有错误消息记录到屏幕上)。我可以使用以下脚本实现此目的:

@ECHO OFF
SET OLD_ZIPS=^
C:\Tmp\Test_v*.txt;^
C:\Tmp\Test_a.txt

ECHO Deleting the following files: %OLD_ZIPS%

FOR %%Y IN (%OLD_ZIPS%) DO (
IF EXIST %%Y (
ECHO Deleting %%Y
DEL /Q %%Y)
)

PAUSE

这很好用:

Deleting the following files: C:\Tmp\Test_v*.txt;C:\Tmp\Test_a.txt
Deleting "C:\Tmp\Test_v1.txt"
Deleting "C:\Tmp\Test_v2.txt"
Deleting "C:\Tmp\Test_a.txt"
Press any key to continue . . .

除非当然文件路径包含空格。所以在上面的示例中,如果我将 C:\Tmp\Test_v*.txt 更改为 C:\Tmp with spaces\Test_v*.txt 我得到:

Deleting the following files: C:\Tmp test\Test_v*.txt;C:\Tmp test\Test_a.txt
Press any key to continue . . .

我怎样才能阻止它在空格处犹豫不决?

编辑 - 我已经按照 Alex K 的回答尝试了空格(加上更多的调试),看起来 for 循环可能没有像我预期的那样拆分:

@ECHO OFF
SET OLD_ZIPS=^
C:\Tmp test\Test_v*.txt;^
C:\Tmp test\Test_a.txt

ECHO Deleting the following files: %OLD_ZIPS%

FOR %%Y IN (%OLD_ZIPS%) DO (
ECHO Checking existance of "%%Y"
IF EXIST "%%Y" (
ECHO Deleting "%%Y"
DEL /Q "%%Y")
)

PAUSE

..给我:

Deleting the following files: C:\Tmp test\Test_v*.txt;C:\Tmp test\Test_a.txt
Checking existance of "C:\Tmp"
Checking existance of "C:\Tmp"
Checking existance of "test\Test_a.txt"

最佳答案

看来您正试图将事情复杂化。

for %a in ("C:\Tmp with spaces\Test_v*.txt" "C:\Tmp\Test_a.txt") do del /q "%a"

做你想做的,可以从命令行输入。如果你想在批处理文件中进行,将 %a 更改为 %%a

关于windows - 当路径包含空格时,如何使用通配符从 MS DOS 批处理文件中删除多个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12498877/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com