如何使用批处理获取文件名?

时间:2015-12-11 14:51:27

标签: batch-file filenames

这个问题在网上被多次询问,所以我提前道歉要求,但不幸的是我无法让我的代码运行。

背景信息:

每个文件都有一个带日期的前缀(或后缀) - 因此是“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'步骤永远不会触发)。

感谢您的帮助!

2 个答案:

答案 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
)