检查注册表是否具有数值

时间:2015-04-14 03:40:32

标签: batch-file unicode registry

我有一个REG_SZ类型的注册表项。我想确定注册表是否具有数值

for /f "tokens=1,2,3 delims== " %%x in ('regdmp HKLM\Software\MyRegistry ^|  Find "v1"') do set myValue=%%y
SET "var1="&for /f "delims=0123456789" %%c in ("%myValue%") do set var1=%%c
if defined var1 echo "Not Numeric" else "Numeric"

如果V1具有英文字符和数字,则此代码有效。如果V1具有Unicode字符,它就无法工作。

1 个答案:

答案 0 :(得分:0)

我建议做一些小改动。

  1. 使用reg代替regdmp直接获取v1
  2. 使用set尝试对变量进行计算,以检查它是否为数字
  3. 在for循环中使用skip = 2跳过标题行
  4. 这是一个带有这些调整的版本。

    @echo off
    setlocal
    for /f "tokens=1,2,3 skip=2" %%x in ('reg query HKLM\Software\MyRegistry /v v1') do set myValue=%%z
    set /a var1=myValue*1
    if x%var1% equ x%myValue% (
        echo "Numeric"
    ) else (
        echo "Not Numeric" 
    )