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
)