[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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楼 【已解决】
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

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

另外,系统是XP还是Win7呢?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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,*

TOP

回复 3# xinxing124
  1. reg query HKEY_CURRENT_USER\Software\Microsoft\Test > 1.txt
复制代码
把1.txt压缩传上来我试试
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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

TOP

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

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

TOP

回复 5# WHY
是要取得前面的项目名称,如 Find、Find 1、Find 2等等,才好将这些不需要的项目进行删除

TOP

本帖最后由 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键。

TOP

  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

评分人数

提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

本帖最后由 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
复制代码

TOP

回复 9# zaqmlp

这个分割的字符串如果是 "AB C<tab>" 又要如何写? AB C加tab键。

TOP

回复 11# xinxing124


    用9楼代码测试6楼文本正常。看不懂你这个新的需求是想表达什么意思,请把包含这种场景的1.txt传上来我试试。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 12# Batcher


  文件类似附件这种,用<tab>字符分割的:

TOP

回复 13# xinxing124


    希望得到什么结果?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 14# Batcher


  希望的结果是,全部取得第二列的值,然后对于第二列的值进行从小到大排序。取得最大值,最小值和平均值。

TOP

返回列表