我正在使用forfiles
这样的命令行(Windows 7 x64):
forfiles /P "C:\root" /M "*.txt" /C "cmd /C echo @relpath"
如何从@relpath
(当前迭代项的相对路径)的替换中转义以获得@relpath
字面输出? (...或任何其他@
变量?)
到目前为止,我尝试了以下方法,但没有成功:
\
:@
似乎在\
之前处理,因此\@relpath
不起作用,而扩展的输出前面只有\
; < / LI>
^
:除了^@
消失外,陈述^
没有任何效果;撰写^^@
并没有帮助,一个^
仍然在扩展输出中; 0xHH
:令我惊讶的是(对我而言),forfiles
- 特定的十六进制数0x40
的替换也不起作用,似乎这是在变量解析之前完成的; @@
:@
翻倍,保留第一个@
字面意思,就是它; 答案 0 :(得分:3)
您可以使用延迟扩展
forfiles /P "C:\temp" /M "st*.txt" /C "cmd /v:on /C set r=0x40 & echo !r:~0,1!relpath"
或者您可以使用百分比扩展。
set percent=%
set at=@
forfiles /P "C:\temp" /M "st*.txt" /C "cmd /C echo %percent%at%percent%relpath"
答案 1 :(得分:2)
我刚刚找到了一种更简单的方法:
forfiles /P "C:\root" /M "*.txt" /C "cmd /C echo @^relpath"
在{/ 1}}符号之后注意^
。