用于检查目录是否存在的批处理脚本

时间:2015-08-20 14:47:29

标签: batch-file

我有一个批处理脚本来执行Windows系统分析。但是为了收集浏览器信息,我必须检查是否安装了浏览器。所有浏览器的路径都取决于系统架构(Program Files或Program Files(x86))。所以我还检查系统是32位还是64位,并将路径存储在变量%program_files%中。但是虽然我的电脑上有谷歌浏览器,但程序会输出错误:“Chrome似乎没有安装”。 以下是描述的代码:

Setlocal EnabledDelayedExpansion
Set RegQry=HKLM\Hardware\Description\System\CentralProcessor\0
REG.exe Query %RegQry% > %usbpath%CheckOS.txt
Find /i "x86" < %usbpath%CheckOS.txt >   %usbpath%StringCheck.txt

IF %ERRORLEVEL% == 0 (
     SET PROGRAM_FILES=%PROGRAMFILES%
) ELSE (
      SET "PROGRAM_FILES= %PROGRAMFILES(x86)%"
)

ECHO Check Google Chrome installation
IF NOT EXIST "!PROGRAM_FILES!\Google\Chrome\" GOTO SKIPG_CHROME

ECHO Running Google ChromeCacheView

:SKIPG_CHROME
ECHO Google Chrome doesn't seem to be installed. ChromeCacheView skipped.

2 个答案:

答案 0 :(得分:0)

如果语句为真,则

%ERRORLEVEL%返回0(这是您的操作系统是基于x86的)。所以现在我知道为什么批量继续显示 Google Chrome似乎......
通过浏览脚本,您似乎正在尝试检测操作系统。 systeminfofind /i的组合可以更轻松地完成这一操作。

替换整个

Set RegQry=HKLM\Hardware\Description\System\CentralProcessor\0
REG.exe Query %RegQry% > %usbpath%CheckOS.txt
Find /i "x86" < %usbpath%CheckOS.txt >   %usbpath%StringCheck.txt

使用

systeminfo | find /i "x64-based" > %usbpath%StringCheck.txt

答案 1 :(得分:0)

确定Chrome的可能位置的任务会更好,从App Paths个注册表项获取应用程序路径。

但这是一个简单的批处理解决方案,可以避免您所犯的所有输入错误:

@echo off
goto GetProgFilesDir

rem If the environment variable "ProgramFiles(x86)" exists with a non
rem empty value, this batch file is running on Windows x64 with a
rem separate standard program files directory for x86 applications.
rem Otherwise the batch file is running on Windows x86 with just
rem one standard program files directory for all applications.

:GetProgFilesDir
if "%ProgramFiles(x86)%" == "" (
    set "PROGRAM_FILES=%ProgramFiles%"
) else (
    set "PROGRAM_FILES=%ProgramFiles(x86)%"
)

echo Check Google Chrome installation
if not exist "%PROGRAM_FILES%\Google\Chrome" goto SKIPG_CHROME

echo Google Chrome is installed.
goto :EOF

:SKIPG_CHROME
echo Google Chrome doesn't seem to be installed.

我不建议通过评估处理器架构来确定Windows的版本。我有一台带有x64处理器的机器,但安装并运行的是Windows x86,因此虽然处理器是64位,但没有目录Program Files (x86)