伪代码:
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
这里有一个你可以查看的网站,它将为你提供如何以及在哪里启动的示例
如何创建一个批处理文件来读取目录中的所有文件
我还建议做一个谷歌搜索-这就是我所做的,以获得这个链接