批处理文件:如果注册表项的数据等于

时间:2012-02-16 16:44:21

标签: batch-file registry

我正在尝试为某些资源管理器设置制作.bat切换器。为此,我需要批处理文件来查询注册表项的数据,然后相应地设置密钥。例如,在ActionScript 3或JavaScript中,它将是这样的:

if (HideFileExt == "00000000"){
    HideFileExt = 00000001;
else {
    HideFileExt = 00000000;
}

这样,每次运行时,它都会将密钥的数据设置为与目前相反的数据 - 切换器。

我广泛使用Google-d,经过相当长的时间切割和拼接多个示例后,我最终得到了这个:

REG QUERY HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v HideFileExt /t REG_DWORD /d 00000000

if errorlevel 1 (
    echo Num 1
) else (
    echo Num 2
)

rem The "echo Num"s are there just so that I could eventually figure out what the errorlevel does

返回错误:

ERROR: Invalid syntax.
Type "REG QUERY /? for usage.
num 1

如果我从/d 00000000中删除REG QUERY,则会返回密钥的准确数据值而不会出错。我还尝试使用/d 0/d 0x0/d 0x00000000,但它们也没有用。

3 个答案:

答案 0 :(得分:7)

/d开关不符合您的想法。它是/f开关的修饰符,用于指定搜索模式。不幸的是,/v已经定义了搜索模式,但它们并不相处。

要检查HideFileExt是否设置为0,您可以将reg的结果传送到find

reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v HideFileExt | find "0x0"
if errorlevel 1 echo "HideFileExt is 0"
if errorlevel 0 echo "HideFileExt is not 0"

答案 1 :(得分:3)

Dennis的答案是正确的,但我认为id粘贴整个批处理文件,以便您可以看到它全部正常工作。

REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" | Find "0x0"
IF %ERRORLEVEL% == 1 goto turnoff
If %ERRORLEVEL% == 0 goto turnon

goto end
:turnon
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v 

HideFileExt /t REG_DWORD /f /D 1
goto end

:turnoff
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v 

HideFileExt /t REG_DWORD /f /D 0
goto end

:end
@exit

答案 2 :(得分:0)

在 2020 年,您可以这样做:

在cmd中写:

powershell -executionpolicy unrestricted C:\path_to_powershell_file.ps1

使用以下代码制作powershell文件并保存(例如检查chrome是否为默认浏览器):

$path = 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\UserChoice'
$value = 'ProgId'
$path_verif = Get-itemProperty -Path $path | Select-Object -ExpandProperty $value
if($path_verif -match 'chrome'){
    Write-Host "Chrome is default browser" -ForegroundColor Green

} else{
    Write-Host "Chrome is NOT default browser. -ForegroundColor Red 
}