Command line 批处理:从路径中有空格的文件中读取行

Command line 批处理:从路径中有空格的文件中读取行,command-line,batch-file,Command Line,Batch File,要从文件中读取行,请在批处理文件中执行以下操作: for /f %%a in (myfile.txt) do ( :: do stuff... ) 现在假设您的文件位于C:\ProgramFiles\myfolder for /f %%a in ("C:\Program Files\myfolder\myfile.txt") do ( echo %%a ) 结果: C:\Program Files\myfolder\myfile.txt 这似乎将给定路径解释为字符串,因此%

要从文件中读取行,请在批处理文件中执行以下操作:

for /f %%a in (myfile.txt) do (
    :: do stuff...
)
现在假设您的文件位于
C:\ProgramFiles\myfolder

for /f %%a in ("C:\Program Files\myfolder\myfile.txt") do (
    echo %%a
)
结果:

C:\Program Files\myfolder\myfile.txt
这似乎将给定路径解释为字符串,因此
%%a
是您的给定路径

到目前为止,在我找到的文档中没有关于这方面的内容。 在我开枪之前,请有人帮帮我。

找到了

for /f %%a in ('type "C:\Program Files\myfolder\myfile.txt"') do (
    echo Deleting: %%a
)

甚至不要问我为什么这样做。

当你键入
帮助时,你会得到文档,告诉你如果你有一个带有空格的路径该怎么做

默认情况下,/F
语法如下

FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
此语法显示了
类型
变通方法的工作原理。因为单引号表示执行
type
命令并循环其输出。添加
usebackq
选项时,语法将更改为:

FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ('string') DO command [command-parameters]
FOR /F ["options"] %variable IN (`command`) DO command [command-parameters]
现在,您可以双引号引用文件路径、单引号文字字符串,并在要执行的命令周围加上反勾号(严重重音)

所以你想这样做:

for /f "usebackq" %%a in ("C:\Program Files\myfolder\myfile.txt") do (
    echo %%a
)

分享下面的代码,希望有人能从中受益

下面的代码采用有空格的路径,如果读取行有空格,则在空格丢失后不会导致任何字符问题

对于/f“tokens=*delims=,”%%a in('type“C:\Progrem File\My Program”')do( 回声%%a
)

在有人想出更好的答案之前,复制“C:\Program Files\myfolder\myfile.txt”temp.txt,即for循环,然后是DEL temp。txt@Gilbert:希望它不是名为“my file.txt”的文件…因为TYPE显示文本文件。您的FOR循环正在处理表示myfile.txt Good find的文件内容的字符串。是的,但它与“FOR/f”一起工作,后者用于读取文件。我本以为与“for”一起工作而没有/f。。。但事实并非如此。无论如何。。。我没有开枪,这是最重要的。我错过了文件的那部分。谢谢
for /f "usebackq" %%a in ("C:\Program Files\myfolder\myfile.txt") do (
    echo %%a
)