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

时间:2012-08-22 20:09:05

标签: windows batch-file

伪代码:

path = ".";
for(;;)
{
   if(exist(path + "/file.exe")
       break;
   path += "/..";
}
基本上,我有一个脚本从一个文件夹运行,该文件夹位于包含file.exe的文件夹的几层深处,我需要找到该文件夹​​的路径。

为了快速解决方法,我将其添加到我的bat文件中:

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

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

3 个答案:

答案 0 :(得分:3)

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

在test.bat中:

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

我的输出:

Filename: C:\TEST_REMOVE\test\test2\testFile.exe
希望它有所帮助!

_ryan

答案 1 :(得分:3)

我会尝试像

这样的东西
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

答案 2 :(得分:0)

这是一个您可以查看的网站,它将为您提供有关如何以及从何处开始的示例

How to create a batchfile to read all files in a directory

我还建议进行Google搜索 - 这就是我为获取此链接所做的工作