我将findstr
结果重定向到文本文件。接下来我删除了写有文本文件名称的文件,但是我遇到了问题。
如果findstr
结果文件的文件名中有空格,则FOR
循环中的结果文件中的所有文件都不会被删除。但是,如果findstr
创建的列表文件的文件名没有名称空格,则FOR
循环将按预期工作,并删除文本文件中列出的所有文件。
此代码正在删除包含" Trojan"作为一个字符串。
findstr /s /m "Trojan" "C:\*.*">>"C:\result.txt" 2>nul
for /f "delims=" %%i in (C:\result.txt) do del "%%i"
但此代码不会删除结果文本文件中列出的文件。
findstr /s /m "Trojan" "C:\*.*">>"C:\result 2.txt" 2>nul
for /f "delims=" %%i in (C:\result 2.txt) do del "%%i"
结果文本文件名称中包含空格。
我的第二个代码有什么问题,结果文本文件在文件名中有空格?
答案 0 :(得分:1)
带空格的文件名通常应用引号括起来。但FOR /F ... IN("string") DO ...
被视为字符串而不是文件名。如果您仔细阅读帮助,有一个简单的解决方案是显而易见的。从命令行:
help for
或
for /?
相关部分是
usebackq - specifies that the new semantics are in force,
where a back quoted string is executed as a
command and a single quoted string is a
literal string command and allows the use of
double quotes to quote file names in
file-set.
所以你需要的只是:
findstr /s /m "Trojan" "C:\*.*">>"C:\result 2.txt" 2>nul
for /f "usebackq delims=" %%i in ("C:\result 2.txt") do del "%%i"