如何转义 `forfiles` 中的 `@` 变量替换?

How to escape the `@` variable replacement in `forfiles`?

我正在使用这样的 forfiles 命令行 (Windows 7 x64):

forfiles /P "C:\root" /M "*.txt" /C "cmd /C echo @relpath"

如何转义替换 @relpath(当前迭代项的相对路径)以按字面意思获得 @relpath 输出? (...或任何其他 @ 变量?)


到目前为止,我尝试了以下操作,但没有成功:

您可以使用延迟扩展

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"

我刚找到一个更简单的方法:

forfiles /P "C:\root" /M "*.txt" /C "cmd /C echo @^relpath"

注意^ @ 符号之后。