批处理:FOR参数/F之usebackq上(原创)2009-01-18 22:40(五)usebackq
该命令不是很明朗,这里只能指出使用"usebackq"时需要注意的问题,就是集合内使用双引号、单引号和后引号的情况。
1、 当集合中的文件名file-set含有空格时使用双引号。
语法:
FOR /F "usebackq" %%I  IN (“FileNameSet”)  DO Command2
用法:
集合中的文件名或路径含有空格时,如“file”与“Name”之间有空格,此时需要用双引号将两者括起来,保持文件名或路径的完整性,并在参数后打开"usebackq"。
集合中的文件名没有空格:
@echo off
For /f %%a in (C:\) do echo %%a
pause>nul
显示结果:
能正常读取文档里的内容。
集合中的文件名含有空格,无法读取文本里的内容:
@echo off
for /f %%a in (C:\Documents and Settings\Administrator\桌面\) do echo %%a
pause>nul
显示结果:
系统不到文件C:\Documents。。
即使加上双引号也只是将其作为字符串显示:
@echo off
for /f %%a in (“C:\Documents and Settings\Administrator\桌面\”) do echo %%a
张子枫男朋友是谁?
pause>nul
显示结果:
C:\Documents
使用"usebackq"但不加双引号,会不到路径:
清明节问候语4个字@echo off
杨受成与容祖儿>电影演员潘虹for /f "usebackq" %%a in (C:\Documents and Settings\Administrator\桌面\) do echo %%a
pause>nul
显示结果:
系统不到文件 C:\Documents。。
正确的方式:使用"usebackq"并且在集合中用双引号将含有空格的文件名包含住。
@echo off
for /f "usebackq" %%a in ("C:\Documents and Settings\Administrator\桌面\") do echo %%a
pause>nul
显示结果:成功显示文档里的内容。相框怎么做
讲解:
这里所说的是文件名,如“”,是区别于后面所说的字符串的。
我的理解,字符串是集合里直接用于屏幕显示的语句,如“我爱北京天安门”,它不是用于执行命令的,也不同于文件名。
文件名是用于间接显示字符串和打开文件或命令的,如文件名“”它本身不直接显示在屏幕上,如果直接显示就是字符串,如果它的目的是打开文本里的信息那它是文件名。
当文件名或路径中间带有空格的时候,如“Documents and Settings”,应该使用usebackq和双引号。
2、当使用usebackq处理文字字符串时使用单引号。
格式:
FOR /F "usebackq" %%variable IN ('command') DO command [command-parameters]
注意:
'command'使用的是“单引号”,区别于上面(`set`)的“后引号”
例:
水的密度
@echo off
for /f "usebackq delims=" %%a in ('Hello "AnsiPeter" Word!') do echo.%%a
pause>nul
显示结果:
Hello "AnsiPeter" Word!
讲解:
前面提到,字符串是用于直接屏幕显示的语句,显然“Hello "AnsiPeter" Word”被直接
显示到屏幕上了。这里只是强调usebackq也可以显示字符串,而且使用单引号,不同于不用usebackq时使用的双引号。
不使用usebackq也可以显示字符串,例:
@echo off
for /f  "delims=" %%a in ("Hello "AnsiPeter" Word!") do echo.%%a
pause>nul
显示结果同上
注意:不使用usebackq显示字符串时,字符串中有空格时必须用英文状态下的双引号。更多请阅读下一节的案例“伟大的中国人民万岁 万岁 万万岁”。