如何使用 Batch 获取文件名?
How can I get Filename using Batch?
这个问题在网上被问了很多次,所以我提前道歉,但不幸的是我无法将我的代码发送到运行。
背景信息:
每个文件都有一个带日期的前缀(或后缀)——因此 "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
)
我的问题:
一旦我的批次遇到上面的代码部分,它就会终止(即我从未看到我的回显文件名,第二个 'Pause' 步骤永远不会触发)。
感谢您的帮助!
在批处理文件中引用元变量 %F
时使用双 %,因此
FOR /R "K:\path" %%F in (*RootFileName*.txt) DO (
echo %%~nF
扩展 Magoo 的答案,您似乎需要使用第二种形式:
:fileprocessing
pause
FOR /R "K:\path\" %%F IN (*RootFileName*.txt) DO (
ECHO %%~nF
pause
)
这个问题在网上被问了很多次,所以我提前道歉,但不幸的是我无法将我的代码发送到运行。
背景信息:
每个文件都有一个带日期的前缀(或后缀)——因此 "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
)
我的问题:
一旦我的批次遇到上面的代码部分,它就会终止(即我从未看到我的回显文件名,第二个 'Pause' 步骤永远不会触发)。
感谢您的帮助!
在批处理文件中引用元变量 %F
时使用双 %,因此
FOR /R "K:\path" %%F in (*RootFileName*.txt) DO (
echo %%~nF
扩展 Magoo 的答案,您似乎需要使用第二种形式:
:fileprocessing
pause
FOR /R "K:\path\" %%F IN (*RootFileName*.txt) DO (
ECHO %%~nF
pause
)