Board logo

标题: [注册表类] 【已解决】批处理如何取得注册表中项目的名称并完成删除操作? [打印本页]

作者: xinxing124    时间: 2018-8-31 16:36     标题: 【已解决】批处理如何取得注册表中项目的名称并完成删除操作?

本帖最后由 xinxing124 于 2018-9-2 20:32 编辑

例如注册表中存在如下项目和值,其中n不确定,
HKEY_CURRENT_USER\Software\Microsoft\Test\Find
FindTextFromEditor     REG_SZ                            1
Find                            REG_SZ                            ou
Find 1                         REG_SZ                            You
Find 2                         REG_SZ                            NT
Find 3                         REG_SZ                            CT
……
……
……
Find n                         REG_SZ                            MT
如何批处理列出所有的 Find——Find n 的项目名称,方便删除存在的项目。

上面的问题答案在 9楼 【已解决】
作者: Batcher    时间: 2018-8-31 17:23

  1. reg query HKEY_CURRENT_USER\Software\Microsoft\Test
复制代码
这个命令的结果发出来看看

另外,系统是XP还是Win7呢?
作者: xinxing124    时间: 2018-8-31 18:00

FindTextFromEditor     REG_SZ                            1
Find                            REG_SZ                            ou
Find 1                         REG_SZ                            You
Find 2                         REG_SZ                            NT
Find 3                         REG_SZ                            CT

结果与我所列相同的,
另外试过了:
For  /f "delims="  %%i in ('@Reg Query "HKEY_CURRENT_USER\Software\Microsoft\Test\Find"  /s ^|findstr /C:"Find " ') do  echo %%i
出现的结果是:
Find 1                         REG_SZ                            You
Find 2                         REG_SZ                            NT
Find 3                         REG_SZ                            CT
……
……
……
Find n                         REG_SZ                            MT

下面这种也试过也不行
skip=4 delims=REG tokens=2,*
作者: Batcher    时间: 2018-8-31 20:09

回复 3# xinxing124
  1. reg query HKEY_CURRENT_USER\Software\Microsoft\Test > 1.txt
复制代码
把1.txt压缩传上来我试试
作者: WHY    时间: 2018-8-31 21:39

  1. Reg Query "HKCU\Software\Microsoft\Test\Find" | findstr /C:"Find " /C:"Find "
复制代码

作者: xinxing124    时间: 2018-9-1 17:39

输出的结果在附件,这里复制了一份

HKEY_CURRENT_USER\Software\Microsoft\Test\Find
    Find    REG_SZ    YU
    Find 1    REG_SZ    >
    Find 2    REG_SZ    {
    Find 60    REG_SZ    I
    FindTestFromEditor    REG_SZ    1
作者: xinxing124    时间: 2018-9-1 17:42

回复 5# WHY
是要取得前面的项目名称,如 Find、Find 1、Find 2等等,才好将这些不需要的项目进行删除
作者: xinxing124    时间: 2018-9-1 17:46

本帖最后由 xinxing124 于 2018-9-2 12:45 编辑

回复 4# Batcher
附件 文件在 6楼 看看有没办法,把这个项目名称取到 Find、Find 1、Find 2并删除这类临时记录的项目,文件中还包括些 Replace、Replace 1、Replace 2这种项目都是临时记录的也最好能一并删除。6楼附件中导出的是Find部分。 由于还存在 Replace、Replace 1、Replace 2这种要删除的项目 所以不能用 R作为分隔符使用,像是唯一的一个 只有判断以 4个连续空格 为分隔符的方式。
  1. reg delete "HKEY_CURRENT_USER\Software\Microsoft\Test" /v "Find "
  2. reg delete "HKEY_CURRENT_USER\Software\Microsoft\Test" /v "Replace "
  3. pause
复制代码
这种都是提示找不到项目。

这个分割的字符串如果是 "AB C<tab>" 又要如何写? AB C加tab键。
作者: zaqmlp    时间: 2018-9-1 19:27

  1. @echo off
  2. set "regkey=HKEY_CURRENT_USER\Software\Microsoft\Test"
  3. for /f "tokens=*" %%a in ('reg query "%regkey%"^|findstr /r /c:"^ *Find [1-9]*[0-9]*" /c:"^ *Replace [1-9]*[0-9]*"') do (
  4.     set "line=%%a"
  5.     setlocal enabledelayedexpansion
  6.     for /f "delims=|" %%b in ("!line:    =|!") do echo;"%%b"
  7.     endlocal
  8. )
  9. pause
复制代码

作者: WHY    时间: 2018-9-1 19:29

本帖最后由 WHY 于 2018-9-1 19:48 编辑

PowerShell 脚本
  1. $path = 'HKCU:\Software\Microsoft\Test';
  2. (Get-Item $path).Property -match '^Find( \d+)?$' | Remove-ItemProperty $path -Name {$_} -WhatIf
复制代码

作者: xinxing124    时间: 2018-9-2 02:14

回复 9# zaqmlp

这个分割的字符串如果是 "AB C<tab>" 又要如何写? AB C加tab键。
作者: Batcher    时间: 2018-9-3 13:03

回复 11# xinxing124


    用9楼代码测试6楼文本正常。看不懂你这个新的需求是想表达什么意思,请把包含这种场景的1.txt传上来我试试。
作者: xinxing124    时间: 2018-9-3 13:36

回复 12# Batcher


  文件类似附件这种,用<tab>字符分割的:
作者: Batcher    时间: 2018-9-3 14:46

回复 13# xinxing124


    希望得到什么结果?
作者: xinxing124    时间: 2018-9-3 15:05

回复 14# Batcher


  希望的结果是,全部取得第二列的值,然后对于第二列的值进行从小到大排序。取得最大值,最小值和平均值。
作者: Batcher    时间: 2018-9-3 15:25

回复 15# xinxing124


先看看这是不是你想要的第二列
  1. @echo off
  2. for /f "tokens=2" %%i in ('type "测试.txt"') do (
  3.     echo %%i
  4. )
  5. pause
复制代码

作者: xinxing124    时间: 2018-9-3 16:36

回复 16# Batcher


    可以了,谢了。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2