返回列表 发帖
回复 5# weichenxiehou


    当语块中出现重定向符号时,cmd 在执行语句前的格式化阶段先判断哪些部分是重定向,为类似 >nul 和 <nul 这样的简写补上句柄 1 和 0,标记为重定向命令并后置,举例如下:
for %%a in (t e s t) do dir>%%a.txt /b /a-d /s "%%a"
::进入循环后,dir>%%a.txt /b /a-d /s "%%a" 被格式化成 dir /b /a-d /s "%%a" 1>%%a.txt
::然后解释 %%a 为 t,再操作句柄。COPY
for %%a in (">test.txt") do dir %%a /b /a-d /s test\
::进入循环后,dir %%a /b /a-d /s test\ 被格式化后还是 dir %%a /b /a-d /s test\,因为进行格式化时 %%a 还未被解释成>test.txt,所以 > 尚未生效,也就不被 cmd 认为是重定向语句
::然后解释 %%a 为 test.txt,再操作句柄为默认选项 1>con 2>conCOPY

TOP

返回列表