我想搜索一个程序,如下:
cd "C:\"
for /f "delims=" %%f in ('dir /b /s myprogram.exe') do (
)
第一个问题:我想让它通过所有硬盘驱动器搜索(比如'cd My Computer'或类似的东西?)
之后,它应该创建该程序所在目录的变量。
如何在batch / cmd中执行此操作?
答案 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
将找到每个匹配项的文件路径(可能有多个)。如果您需要在这些路径上采取行动,您有几种选择:
在@echo %1 found: %%~dpf
行之后添加文件处理命令,使用%%~dpf
作为包含文件完整路径的变量。
将路径写入临时文本文件(@echo %%~dpf >> temp.out
),然后在另一个for
循环中读回来进行处理。
将路径连接到本地环境变量(set FILE_PATHS=!FILE_PATHS!;%%~dpf
),然后在另一个for
循环中解析该变量以进行处理。