如何使用 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
)