windows批处理FOR循环以查找文件夹



伪代码:

path = ".";
for(;;)
{
   if(exist(path + "/file.exe")
       break;
   path += "/..";
}

基本上,我有一个脚本,它是从一个文件夹运行的,该文件夹距离包含file.exe的文件夹有几层深,我需要找到该文件夹的路径。

为了快速解决问题,我在bat文件中添加了以下内容:

set PATH=..;....;......;........;%PATH%

有没有一种正确的方法来迭代文件夹并检查其中是否存在文件?

我会尝试类似的东西

pushd
:loop
if exist file.exe goto :found
set lastdir=%cd%
cd ..
if "%cd%" EQU "%lastdir%" goto :notfound
goto :loop
:notfound
echo file.exe not found!
popd
goto :eof
:found
set file=%cd%file.exe
popd

您可以使用"usebackq"关键字捕获DOS命令的输出,并将命令字符串用`characters括起来。然后,您可以将DOS dir命令与裸输出(/B)和子目录搜索(/S)开关以及所需的文件名一起使用,以生成该文件名的完全限定路径字符串。在本例中,我在当前目录的test/test2中有testFile.exe。

测试中.bat:

@FOR /F "usebackq" %%y in (`dir /s /b testFile.exe`) do @echo Filename: %%y

我的输出:

Filename: C:TEST_REMOVEtesttest2testFile.exe

希望它能有所帮助!

_ryan

这里有一个你可以查看的网站,它将为你提供如何以及在哪里启动的示例

如何创建一个批处理文件来读取目录中的所有文件

我还建议做一个谷歌搜索-这就是我所做的,以获得这个链接