【发布时间】:2016-12-20 21:16:44
【问题描述】:
您好,我正在尝试创建一个批处理文件,用于查询注册表项并根据其值启动特定程序。
我尝试了互联网上的各种组合,但我似乎无法获得正确的行为。
基本上,脚本会检查定义当前 DPI 的 regkey。根据该值,将运行两个程序之一(PowerShell 脚本),然后运行 InternetExplorer.Application 窗口,并具有特定的大小限制。
来源:
到目前为止,我得到的是:
@echo off
setlocal
set "Key=HKCU\Control Panel\Desktop\WindowMetrics"
set Type=REG_DWORD
set Value=AppliedDPI
set Data=
for /f "tokens=2,3" %%a in ('reg query %Key% /v %Value% 2^>NUL ^| find /i "%Value%"') do (
set TestType=%%a
set Data=%%b
)
if /i "%Data%"=="0x60" goto Data_96
if /i "%Data%"=="0xc0" goto Data_192
if /i not "%TestType%"=="%Type%" goto :Data_Missing
goto Data_Undefined
:Data_96
echo Data is "%Data%".
goto 96
:Data_192
echo Data is "%Data%".
goto 192
:Data_Missing
echo Key or value not found.
goto leave
:Data_Undefined
echo No action for data "%Data%" defined.
goto leave
:96
powershell.exe -ExecutionPolicy Unrestricted -File somescript1.ps1
goto leave
:192
powershell.exe -ExecutionPolicy Unrestricted -File somescript2.ps1
goto leave
:leave
但这只是行不通。不断收到“找不到键或值”。 我尝试过的其他示例最终都加载了两个脚本。 我显然设置了错误,但不确定是什么。
【问题讨论】:
-
您需要在 REG QUERY 中的 %key% 变量周围加上引号。
reg query "%Key%" /v %Value% -
感谢@Squashman 的回复。不幸的是,现在这会输出另一个错误:“┬áset”不是内部或外部命令、可运行程序或批处理文件。
-
@Squashman 谢谢。在您的帮助下并回答了我自己的以下问题('┬áset' 是因为 'set' 在它之前有一个空格)我现在已经开始工作了!谢谢!
-
我在您的 set 命令中没有看到任何会导致问题的空格。
标签: powershell batch-file registry