我有一个批处理脚本来执行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.
答案 0 :(得分:0)
%ERRORLEVEL%
返回0(这是您的操作系统是基于x86的)。所以现在我知道为什么批量继续显示 Google Chrome似乎...... 。
通过浏览脚本,您似乎正在尝试检测操作系统。 systeminfo
和find /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)
。