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
有没有办法在windows批处理中查找只有最终名称的元素_Windows_Batch File - Fatal编程技术网

有没有办法在windows批处理中查找只有最终名称的元素

有没有办法在windows批处理中查找只有最终名称的元素,windows,batch-file,Windows,Batch File,我是windows批处理中的一个巨大的noob,我想知道是否有办法找到一个具有最终名称的文件 例如,如果我想运行一个名为“myBatch.bat”的文件,但我不知道它在我的计算机上的确切位置 有这样的命令吗 c:/*/myBatch.bat 您可以使用for/r递归搜索文件。从cmd控制台: for/r“C:\%I in(*mybatch.bat)do@“%~I” 从.bat脚本中: 对于(*mybatch.bat)中的/r“C:\”%%I,请调用“%%~I” 如前所述,如果有任何文件的名

我是windows批处理中的一个巨大的noob,我想知道是否有办法找到一个具有最终名称的文件

例如,如果我想运行一个名为“myBatch.bat”的文件,但我不知道它在我的计算机上的确切位置

有这样的命令吗

c:/*/myBatch.bat

您可以使用
for/r
递归搜索文件。从cmd控制台:

for/r“C:\%I in(*mybatch.bat)do@“%~I”
从.bat脚本中:

对于(*mybatch.bat)中的/r“C:\”%%I,请调用“%%~I”
如前所述,如果有任何文件的名称类似,但带有前缀,则可能返回假阳性。对于附加的健全性检查,您可以添加
if
语句

for/r“C:\”%%I in(*mybatch.bat)do if/I“%%~nI”==“mybatch”调用“%%~I”

在任何情况下,
for/r
都比使用纯MS-DOS/Windows NT实用程序的
for/f

略为高效:
dirc:\/s/a/b \/find/i“\myBatch.bat”
。或者,您可以考虑安装GNUWI32,并使用真正的<代码>查找< /代码>。路径名的最后一个组件称为文件的basename。我希望在诸如run C:/MyFile/*/myBatch.bat之类的命令中使用它。您不能这样做。可执行文件可以在当前目录中找到,也可以在命令搜索
%PATH%
中找到,或者必须通过提供绝对或相对路径名来显式定位。和
cmd.exe
确实需要在路径名组件之间使用\back\slash。您可以使用
FOR/R
命令查找文件,然后执行它找到的文件,或者使用
FOR/F
命令和
FOR/F
in
子句中执行的
DIR
命令。您还可以使用
FOR/F
FOR/F“delims=“%G in('dir/B/S”C:\myBatch.bat“')do@echo“%~G”的in子句中的
WHERE
命令,您可以使用
调用“%~G”
而不是
echo“%~G”