Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 检查注册表是否有数值_Batch File_Unicode_Registry - Fatal编程技术网

Batch file 检查注册表是否有数值

Batch file 检查注册表是否有数值,batch-file,unicode,registry,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 Numer

我有一个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字符,它就不起作用。

我建议做一些小改动

  • 使用reg而不是regdmp直接获取v1
  • 使用set尝试对变量进行计算,以检查其是否为数值
  • 在for循环中使用skip=2跳过标题行
  • 这是一个有这些调整的版本

    @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" 
    )
    

    谢谢。。工作原理:-)太好了!请记住接受这个答案来结束这个问题。