遍历各盘符,搜索时候安装某软件exe(某文件是否存在)
bat遍历各盘符,搜索是否安装某软件exe
eg.查找unity.exe的安装目录
知识点:
- %ProgramFiles%,默认环境变量,默认c盘的安装目录,值C:\Program Files(由于c判断文件目录过多,只搜索默认安装目录)
- 借助dir罗列所有的文件
- 借助Wmic Logicaldisk Where “DriveType=3” Get Name获取各个盘符,跳过前两行(第一行为默认信息,第二行为c盘)
- 补充:由于存在32位机器情况,在将脚本打包到exe时,或某些情况,可能会将%ProgramFiles%识别为C:\Program Files (x86),所以还是建议直接写死目录
set exe_name=unity.exe
rem 搜索c盘的安装目录
echo 在%ProgramFiles%中搜索%exe_name%
for /f "tokens=*" %%i in ('dir /a/b/s/on "%ProgramFiles%\*%exe_name%"') do (
echo 搜索结果 "%%i"
SET unity_path=%%i
)
rem 直接写死c盘的两个路径
@REM echo 在C:\Program Files (x86)中搜索%exe_name%
@REM for /f "tokens=*" %%i in ('dir /a/b/s/on "C:\Program Files (x86)\*%exe_name%"') do (
@REM echo 搜索结果 "%%i"
@REM SET unity_path=%%i
@REM goto :eof
@REM )
@REM
@REM echo 在C:\Program Files中搜索%exe_name%
@REM for /f "tokens=*" %%i in ('dir /a/b/s/on "C:\Program Files\*%exe_name%"') do (
@REM echo 搜索结果 "%%i"
@REM SET unity_path=%%i
@REM goto :eof
@REM )
rem 搜索其他盘
for /F "Skip=2" %%d in ('Wmic Logicaldisk Where "DriveType=3" Get Name') do (
echo 在%%d中搜索%exe_name%
for /f "tokens=*" %%i in ('dir /a/b/s/on "%%d\*%exe_name%"') do (
echo 搜索结果 "%%i"
SET unity_path=%%i
)
)
echo %unity_path%