Mic*_*l M 4 windows command-line batch-file
在我详细介绍之前,我想强调一下,使用PowerShell不是一种选择,因为脚本应该在PowerShell可能无法使用的机器上运行.
我需要检查Windows机器上安装的Internet Explorer版本,并根据它的版本对其进行操作.
到目前为止,我的批处理脚本如下所示:
@echo off
setlocal
for /f "tokens=*" %%a in ( 'reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer" /v Version' ) do ( set IEVerReg=%%a )
endlocal
Run Code Online (Sandbox Code Playgroud)
如您所见,我正在reg query为IEVarReg变量分配输出.在不同的Windows版本上,输出是不同的,例如:
Windows XP:
! REG.EXE VERSION 3.0
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer
Version REG_SZ 8.0.6001.18702
Run Code Online (Sandbox Code Playgroud)
Windows 7的:
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer
Version REG_SZ 9.0.8112.16421
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想从版本号中获取第一个数字并执行以下操作:
if
version == 8
then
execute this
elseif
version == 9
then
execute that
Run Code Online (Sandbox Code Playgroud)
我确定if一旦得到版本号,我就会弄清楚如何做这个部分,但这是我无法弄清楚的版本号部分.我可以在bash,perl等中轻松完成,但不知道Windows命令行.
非常感谢帮助.
PS.我看过Jerold Schulman的剧本,但它返回的版本号对我来说太过分了.
你需要整理所有这些部分
访问注册表以查询版本号.看到REG QUERY /?
REG QUERY "HKLM\Software\Microsoft\Internet Explorer" /v Version
Run Code Online (Sandbox Code Playgroud)从REG命令返回的信息中提取包含该版本的行.您可以将输出汇总REG到FIND命令中.看到HELP FIND
REG ... | FIND "REG_SZ"
Run Code Online (Sandbox Code Playgroud)将结果设置为变量.您可以使用该FOR /F命令执行此操作.使用tokens=3提取的版本号是在返回行的第三个位置.另请注意^逃脱管道角色所需的插入符号|.看到HELP FOR
FOR /F "tokens=3" %%a in ('REG QUERY "HKLM\Software\Microsoft\Internet Explorer" /v Version ^| FIND "REG_SZ"') DO (
SET v=%%a
)
Run Code Online (Sandbox Code Playgroud)从版本字符串中提取主版本号.使用delims=.在周期解析.见HELP FOR.要适当扩展变量,必须使用扩展扩展并使用!语法来访问变量.此外,用/A它来作为一个数字.看到HELP SET
FOR /F "tokens=1 delims=." %%m in ('echo !v!') do (
SET /A m=%%m
)
Run Code Online (Sandbox Code Playgroud)最后,添加您的IE版本的逻辑
IF .!m!==.8 (
echo it's 8
) ELSE (
...
Run Code Online (Sandbox Code Playgroud)工作BAT的第一个版本必须是这样的......
@echo off
setlocal enabledelayedexpansion
FOR /F "tokens=3" %%a in ('REG QUERY "HKLM\Software\Microsoft\Internet Explorer" /v Version ^| FIND "REG_SZ"') DO (
set v=%%a
echo !v!
FOR /F "tokens=1 delims=." %%m in ('echo !v!') do (
SET /A m=%%m
)
IF !m! EQU 8 (
echo it's 8
) ELSE (
IF !m! EQU 9 (
echo it's 9
) ELSE (
echo norrrrr
)
)
)
endlocal
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15015 次 |
| 最近记录: |