这个问题在网上被多次询问,所以我提前道歉要求,但不幸的是我无法让我的代码运行。
背景信息:
每个文件都有一个带日期的前缀(或后缀) - 因此是“RootFileName”之前和之后的通配符。
我觉得上面的代码应该给我文件名(%~nF)...但是只要我的代码点击下面的部分,它就会终止批处理。
我的代码:
:fileprocessing
pause
FOR /R %F in ("K:\path\*RootFileName*.txt") DO (
echo %~nF
pause
)
注意:在进行故障排除时,上面添加了暂停,以准确找到我的批处理终止的位置。
我也尝试过:
:fileprocessing
pause
FOR /R "K:\path\" %F in (*RootFileName*.txt) DO (
echo %~nF
pause
)
我的问题:
一旦我的批次点击上面的代码部分,它就会终止(即我从未看到我的echo'd文件名和第二个'Pause'步骤永远不会触发)。
感谢您的帮助!
答案 0 :(得分:3)
在批处理文件中引用元变量%F
时使用double %,因此
FOR /R "K:\path" %%F in (*RootFileName*.txt) DO (
echo %%~nF
答案 1 :(得分:1)
扩展Magoo的答案,似乎你需要使用你的第二种形式:
:fileprocessing
pause
FOR /R "K:\path\" %%F IN (*RootFileName*.txt) DO (
ECHO %%~nF
pause
)