伪代码:
path = ".";
for(;;)
{
if(exist(path + "/file.exe")
break;
path += "/..";
}
基本上,我有一个脚本从一个文件夹运行,该文件夹位于包含file.exe的文件夹的几层深处,我需要找到该文件夹的路径。
为了快速解决方法,我将其添加到我的bat文件中:
set PATH=..;..\..;..\..\..;..\..\..\..;%PATH%
是否有正确的方法来迭代文件夹并检查文件中是否存在文件?
答案 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搜索 - 这就是我为获取此链接所做的工作