3

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

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

如何避免替换@relpath(当前迭代项的相对路径)以@relpath逐字获取输出?(......或任何其他@变量?)


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

  • \:@似乎之前处理过\所以\@relpath不起作用,而是扩展的输出只是在前面加上\;
  • ^:陈述除了消失^@之外没有任何效果;^写作^^@也无济于事,^然后在扩展输出中保留一个;
  • 0xHH:(对我来说)令人惊讶的是forfiles,十六进制数字的特定替换0x40也不起作用,似乎这是在变量解析之前完成的;
  • @@@:将第一个字面意思加倍@,就是这样;
4

2 回答 2

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"
于 2015-09-04T16:26:22.010 回答
2

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

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

注意标志后面^ @

于 2015-09-04T17:16:10.357 回答