我试图按名称删除文件并将路径保存到文本文件如果相关文件或文件夹路径/名称不包含空格,批处理执行得很好,但是如果文件名包含空格则拒绝读取超出第一个空格。这与引号无关。
可以帮忙吗?for /f %%1 in (C:\BLACKLIST.txt) do rd /s /q %%1
也不起作用:
for /f %%1 in (C:\BLACKLIST.txt) do rd /s /q "%%1"
答案 0 :(得分:1)
您需要添加令牌才能让它读取整行
for /f "tokens=*" %%1 in (C:\BLACKLIST.txt) do rd /s /q "%%1"
for /f
循环读取行并根据某些分隔符或分隔符将它们拆分为标记。默认情况下,分隔符为<space>
和<tab>
,如果未指定,则仅读取第一个标记。 tokens
选项允许您覆盖默认值并指定所需的标记。在您的情况下,您想要所有这些,这就是您需要放置*
(单个*
代表“所有令牌”)的原因。
或者,您可以通过重置delims
选项来指定“无分隔符”,如下所示:
for /f "delims=" %%1 in (C:\BLACKLIST.txt) do rd /s /q "%%1"