从批输出中删除或替换字符串

时间:2014-09-03 10:24:21

标签: batch-file registry

我正在查询注册表项以使用命令获取值(示例):

REG QUERY HKLM\Software\Foo /v Bar >>c:\Foo.txt

打开Foo.txt文件时,我得到:

HKEY_LOCAL_MACHINE\Software\Foo
    Bar   REG_SZ    foo-bar

如何删除或替换键名(HKEY_LOCAL_MACHINE\Software\Foo)和“REG_SZ”? (最好只使用批次)

1 个答案:

答案 0 :(得分:1)

@echo off
    setlocal enableextensions disabledelayedexpansion

    for /f "delims=" %%a in ('
        reg query "HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications" /v "Paint" 2^>nul
        ^|find "REG_SZ"
    ') do set "data=%%a"
    >foo.txt echo(%data:REG_SZ=%

执行命令,仅检索包含REG_SZ的行并将此行存储到变量中。然后删除不需要的数据并保存到目标文件

已修改以适应评论

@echo off
    setlocal enableextensions disabledelayedexpansion

    set "data="
    for %%k in (
        "NoPaint" "Paint"
    ) do if not defined data for /f "delims=" %%a in ('
        reg query "HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications" /v "%%~k" 2^>nul 
        ^|find "REG_SZ"
    ') do set "data=%%a"

    if defined data (
        >foo.txt echo(%data:REG_SZ=%
    ) else (
        echo ERROR 
    )

不是直接给出密钥,而是遍历候选列表,直到定义了将保存数据的变量。最后,如果变量保存数据,则适应和回显,否则显示错误