CMD:搜索程序和变量目录

时间:2009-08-29 09:05:19

标签: batch-file cmd

我想搜索一个程序,如下:

cd "C:\"
for /f "delims=" %%f in ('dir /b /s myprogram.exe') do (
)

第一个问题:我想让它通过所有硬盘驱动器搜索(比如'cd My Computer'或类似的东西?)

之后,它应该创建该程序所在目录的变量。

如何在batch / cmd中执行此操作?

2 个答案:

答案 0 :(得分:1)

“cd C:\”出现问题,只有当你在驱动器C:上时它才有效,但如果你在另一个驱动器上则不行。解决方案是首先写入驱动器的字母 最简单的方法就是这样做:

for %%D in (c,d,e,f,g,h,i,j,k,l,m,o) do (
    %%D:
    cd %%D:\
        for /f "delims=" %%f in ('dir /b /s myprogram.exe') do (
        )
)

然后搜索所有驱动器。你也可以使用

for %%D in (c,d,e,f,g,h,i,j,k,l,m,o) do (
    If exist %%D:\ do (
        %%D:
        cd %%D:\
        for /f "delims=" %%f in ('dir /b /s myprogram.exe') do (
        )
    )
)

希望它有所帮助。

答案 1 :(得分:1)

此脚本将打印出找到文件的完整路径:

@echo OFF

for %%D in (c,d,e) do (    
    If exist %%D:\ (        
        for /f "delims=" %%f in ('dir /b /s %%D:\%1 2^> NUL') do (
            @echo %1 found: %%~dpf
        )
    )
)

%%~dpf将找到每个匹配项的文件路径(可能有多个)。如果您需要在这些路径上采取行动,您有几种选择:

  1. @echo %1 found: %%~dpf行之后添加文件处理命令,使用%%~dpf作为包含文件完整路径的变量。

  2. 将路径写入临时文本文件(@echo %%~dpf >> temp.out),然后在另一个for循环中读回来进行处理。

  3. 将路径连接到本地环境变量(set FILE_PATHS=!FILE_PATHS!;%%~dpf),然后在另一个for循环中解析该变量以进行处理。