3

伪代码:

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

基本上,我有一个脚本从一个文件夹运行,该文件夹比包含 file.exe 的文件夹深几级,我需要找到该文件夹​​的路径。

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

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

是否有适当的方法来迭代文件夹并检查其中是否存在文件?

4

3 回答 3

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

希望能帮助到你!

_瑞安

于 2012-08-22T21:12:57.950 回答
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
于 2012-08-22T22:42:55.697 回答
0

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

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

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

于 2012-08-22T20:27:05.077 回答