有两个地方我觉得解释有误。
1、
(2)设置变量获取带空格路径
Examples:
@echo off
for /r %%a in ("*.txt") do (
set str=%%a
)
错误提示:
其中%%a无法正确获取*.txt中含有空格文件名的值
解决办法:
@echo off
for /r %%a in ("*.txt") do (
set "str=%%a"
)
不会出现错误吧?用 set 设置变量,我知道有两点好处:
① 防止不小心修改了代码。如清空变量:
set "str="
② 如果要设置变量 str 的值为 a,并用连接符(&)再执行一个命令,以下是错误的:
set str=a & goto next
这样设置的 str 的值为“a ”(后面还有一个空格)。加上双引号就没事了:
set "str=a" & goto next
或者紧凑一点:
set str=a&goto next
这样不是很好看。
2、
3.FOR语句中带空格路径的问题
Examples:
FOR /F %%i IN ('DIR "C:\program files\WinRAR\*.rar" /s/b')
错误提示:
%%i 只能获取 c:\program
解决办法:使用扩展参数usebackq后给路径加双引号就行了
FOR /F "usebackq delims=" %%i IN (`DIR "C:\program files\WinRAR\*.rar" /s/b`)
避免了错误的原因并不是 usebackq 吧,而是 "delims="。
usebackq 的三个用法:
① 字符串
for /f "usebackq" %a in ('a b') do @echo %a
② 带空格路径
for /f "usebackq" %a in ("C:\a b.txt") do @echo %a
③ 命令
for /f "usebackq" %a in (`path`) do @echo %a