找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 77151|回复: 16

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

[复制链接]
发表于 2018-8-31 16:36:19 | 显示全部楼层 |阅读模式
本帖最后由 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楼 【已解决】

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2018-8-31 17:23:08 | 显示全部楼层
  1. reg query HKEY_CURRENT_USER\Software\Microsoft\Test
复制代码
这个命令的结果发出来看看

另外,系统是XP还是Win7呢?
 楼主| 发表于 2018-8-31 18:00:32 | 显示全部楼层
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,*
发表于 2018-8-31 20:09:39 | 显示全部楼层
回复 3# xinxing124
  1. reg query HKEY_CURRENT_USER\Software\Microsoft\Test > 1.txt
复制代码
把1.txt压缩传上来我试试
发表于 2018-8-31 21:39:27 | 显示全部楼层
  1. Reg Query "HKCU\Software\Microsoft\Test\Find" | findstr /C:"Find " /C:"Find        "
复制代码
 楼主| 发表于 2018-9-1 17:39:41 | 显示全部楼层
输出的结果在附件,这里复制了一份

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
 楼主| 发表于 2018-9-1 17:42:08 | 显示全部楼层
回复 5# WHY
是要取得前面的项目名称,如 Find、Find 1、Find 2等等,才好将这些不需要的项目进行删除
 楼主| 发表于 2018-9-1 17:46:06 | 显示全部楼层
本帖最后由 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键。
发表于 2018-9-1 19:27:53 | 显示全部楼层
  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
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2018-9-1 19:29:44 | 显示全部楼层
本帖最后由 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
复制代码
 楼主| 发表于 2018-9-2 02:14:27 | 显示全部楼层
回复 9# zaqmlp

这个分割的字符串如果是 "AB C<tab>" 又要如何写? AB C加tab键。
发表于 2018-9-3 13:03:50 | 显示全部楼层
回复 11# xinxing124


    用9楼代码测试6楼文本正常。看不懂你这个新的需求是想表达什么意思,请把包含这种场景的1.txt传上来我试试。
 楼主| 发表于 2018-9-3 13:36:06 | 显示全部楼层
回复 12# Batcher


  文件类似附件这种,用<tab>字符分割的:
发表于 2018-9-3 14:46:09 | 显示全部楼层
回复 13# xinxing124


    希望得到什么结果?
 楼主| 发表于 2018-9-3 15:05:10 | 显示全部楼层
回复 14# Batcher


  希望的结果是,全部取得第二列的值,然后对于第二列的值进行从小到大排序。取得最大值,最小值和平均值。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 18:28 , Processed in 0.024352 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表