Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何使用批处理获取文件名?_Batch File_Filenames - Fatal编程技术网

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

Batch file 如何使用批处理获取文件名?,batch-file,filenames,Batch File,Filenames,这个问题在网上被问了很多次,所以我提前为这个问题道歉,但不幸的是我无法运行我的代码 背景信息: :fileprocessing pause FOR /R %F in ("K:\path\*RootFileName*.txt") DO ( echo %~nF pause ) 每个文件都有一个带有日期的前缀(或后缀)——因此在“RootFileName”之前和之后都有通配符 我觉得上面的代码应该给我文件名(%~nF)。。。但是一旦我的代码到达下面的部分,它就会终止批处理过程

这个问题在网上被问了很多次,所以我提前为这个问题道歉,但不幸的是我无法运行我的代码

背景信息:

:fileprocessing
pause
FOR /R %F in ("K:\path\*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
    )
我的问题:

:fileprocessing
pause
FOR /R %F in ("K:\path\*RootFileName*.txt") DO (
    echo %~nF
    pause
    )
当我的批处理到达上面的代码部分时,它就会终止(即,我从未看到我的echo文件名&第二个“暂停”步骤从未触发)

谢谢你的帮助

在批处理文件中引用元变量
%F
时使用double%,因此

FOR /R "K:\path" %%F in (*RootFileName*.txt) DO (
    echo %%~nF
在批处理文件中引用元变量
%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
)

扩展Magoo的答案,您似乎需要使用第二种形式:

:fileprocessing
pause
FOR /R "K:\path\" %%F IN (*RootFileName*.txt) DO (
    ECHO %%~nF
    pause
)

这就停止了解雇问题。非常感谢。但是,现在它跳过了文件名echo并直接进入第二个暂停?实际上,它似乎没有运行任何DO()命令,而是跳过了我在程序退出前设置的另一个故障排除暂停。关于它为什么跳过DO()?的任何建议对我来说都非常有效,使用'for/R“M:\seattle“%%F in(d23)DO(echo%%~nF pause)[newlines as you have]-我的系统尽职尽责地显示了文件名并暂停了。我是个白痴,仍然在使用最新版本的代码(上面的第一组)@zb226帮助我认识到我做错了什么。非常感谢。这就停止了解雇问题。非常感谢。但是,现在它跳过了文件名echo并直接进入第二个暂停?实际上,它似乎没有运行任何DO()命令,而是跳过了我在程序退出前设置的另一个故障排除暂停。关于它为什么跳过DO()?的任何建议对我来说都非常有效,使用'for/R“M:\seattle“%%F in(d23)DO(echo%%~nF pause)[newlines as you have]-我的系统尽职尽责地显示了文件名并暂停了。我是个白痴,仍然在使用最新版本的代码(上面的第一组)@zb226帮助我认识到我做错了什么。非常感谢。打开命令提示窗口,输入<代码>以获取/?或<代码>帮助以获取,然后执行并返回。现在,您将获得显示的命令帮助,您应该仔细阅读,最好是所有页面,而不仅仅是第一个页面。打开命令提示窗口,输入
以获取/?
帮助以获取
,然后执行并返回。现在您可以看到命令的帮助,您应该仔细阅读,最好是所有页面,而不仅仅是第一页。