REG 删除批处理文件中包含引号的值?

2024-01-04

我正在尝试删除我制作的批处理文件中的一些注册表项。

我在这里找到了以下代码,它运行良好,直到它击中 REG DELETE

for /F "tokens=1,*" %%a in ('REG QUERY "%KEY%" ^| findstr /I /C:"%VALUE%"') do (REG DELETE %KEY% /v %%a)

该值位于 [HK_CLASSES_ROOT\Installer\Assemblies\Global] 下
正如您可能看到的,这里的大多数值都带有引号,例如:

ADODB,fileVersion="7.10.2346.0",version="7.0.3300.00",culture="neutral",publicKeyToken="B03F5F7F11D50A3A"

这并不完全是我想要删除的内容,但它非常接近。

因此,如果我 echo %%a ,它会显示注册表中的值名称,并带有引号和所有内容。 但是一旦它通过 REG DELETE(现在它要求确认),引号就不存在了,所以如果我点击“是”,它会告诉我它找不到密钥。

显然它不能,因为它没有解析最初发现的相同内容。我一直在努力寻找解决方案,但到目前为止我还没有找到任何可以帮助我朝正确方向发展的东西。我知道我可能可以在 vbs 中做同样的事情,但是这是一行很长的代码,而在 vbs 中做同样的工作会花费更长的时间。

感谢任何帮助,如果您需要更多信息,请询问,我刚刚开始摆弄批处理文件。我之所以这样做是因为每次我在学校工作时,我都需要自动化学校项目所有依赖项的安装过程。(计算机被幽灵化了)

Thanks


备注 - 您的"tokens=1,*"不需要,因为您只使用第一个令牌。但这也没有造成问题

正如您在评论中发现并指出的那样,引号必须转义为\"。您可以使用环境变量搜索和替换以编程方式转义引号。由于必须在代码块内设置和扩展变量,因此必须使用延迟扩展。这是因为正常扩展发生在解析该行时,并且整个块被一次性解析,因此正常扩展将产生循环执行之前存在的值!执行该行时会发生延迟扩展。

@echo off
setlocal enableDelayedExpansion

::some additional code to setup KEY and VALUE

for /F %%A in ('REG QUERY "%KEY%" ^| findstr /I /C:"%VALUE%"') do (
  set val=%%A
  REG DELETE "%KEY%" /v !val:"=\"!
)

我不知道是否可以有!值中,但如果是,则必须在循环内打开和关闭延迟扩展。否则,当 %%A 包含以下内容时,它的扩展将被破坏!.

@echo off
setlocal disableDelayedExpansion

::some additional code to setup KEY and VALUE

for /F %%A in ('REG QUERY "%KEY%" ^| findstr /I /C:"%VALUE%"') do (
  set val=%%A
  setlocal enableDelayedExpansion
  REG DELETE "%KEY%" /v !val:"=\"!
  endlocal
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

REG 删除批处理文件中包含引号的值? 的相关文章

随机推荐

  • 亚马逊认知:未找到身份

    我正在开发经过开发人员身份验证的项目 我正在尝试使用下面的代码获取凭据 但它给了我以下错误 我已将 IdentityId 和 Token 从服务器代码手动粘贴到此代码中 Caused by com amazonaws services co
  • 点划线和虚线的绘图问题:如何修改默认线型以便更好地与矢量渲染器“画家”一起使用?

    Matlab 提供以下默认值线条样式 http www mathworks com help matlab ref linespec html Solid line default Dashed line Dotted line Dash
  • 阻止 PWA 在桌面上安装 chrome 76 提示?

    如果满足 PWA 标准 Chrome 76 在多功能框中引入了一个 安装应用程序 按钮 有没有办法阻止此按钮出现在 chrome 桌面的多功能框中 假设您想阻止默认设置以显示自定义安装横幅 在这里读 https love2dev com b
  • 如何使用通配符实例化泛型?

    让我们研究一些使用通配符的通用实例化情况 1 这段代码 List 生成以下错误 required class or interface without bounds found 2 但是这个 List gt 编译成功 3 和这个 List
  • java反编译

    当使用java反编译器 http java decompiler free fr 反编译特定的jar时 我得到了一些奇怪的代码 我无法识别是什么 有人能帮我吗 代码是这样的 Foo access 004 Foo this or this B
  • 动画 Android 环形的扫角

    尝试对 Android 环形进行动画处理 以产生与显示的图像序列类似的效果 我找到了可绘制形状的戒指
  • 我们是否必须在控制器中发布具有与 pojo 对象完全相同的字段的 json 对象?

    我是 Spring Rest 新手 在将 JSON 对象从 jquery 映射到控制器时遇到问题 我的 jquery JSON 对象缺少一些字段 这些字段存在于控制器上的 java 对象中 我是否必须创建新类来映射此类对象 或者有什么方法可
  • 带有 void 输入的 Lambda 表达式

    好吧 非常愚蠢的问题 x gt x 2 是一个 lambda 代表与委托相同的东西 int Foo x return x 2 但是 lambda 等价于什么 int Bar return 2 多谢 零 lambda 等价物是 gt 2
  • 将 Python 脚本移动到另一台计算机

    我想知道如果我编写一个使用计算机上已安装的库 例如 lxml 的 Python 脚本 并且我想将此脚本部署到另一台计算机上 我的选择是什么 当然 在另一台机器上安装 Python 是可以的 但是我是否还必须安装我在脚本中使用的所有库 或者我
  • 如何在两个值之间切换?

    我想在Python中的两个值之间切换 即0和1之间 例如 当我第一次运行某个函数时 它会生成数字 0 下一次 它会生成 1 第三次它会返回到零 依此类推 抱歉 如果这没有意义 但是有人知道如何做到这一点吗 Use itertools cyc
  • 警告:返回类型默认为“int”[-Wreturn-type]

    我是一名开始学习 C 的 Linux 用户 我正在尝试编译我输入的这个源代码 include
  • 覆盖 Liferay 启动事件

    我有一个关于 Liferay 启动事件的问题 Liferay 文档中给出 启动活动 输入扩展的逗号分隔类名列表com liferay portal struts SimpleAction 这些类将在指定事件中运行 有人可以告诉我两者之间有什
  • 数组越界,参数问题

    所以当我编译时 一切都会编译得很好 当我去运行该程序时 我收到此错误 线程 main 中的异常 java lang ArrayIndexOutOfBoundsException 0 在 ClientForNoDupCollection ma
  • 如何使用动态列取消透视 Oracle

    我需要取消透视一个我无法控制列的表 所以我需要动态获取列名称 这就是我所拥有的 CREATE TABLE test PK VARCHAR2 255 CHAR COL1 VARCHAR2 255 CHAR COL2 VARCHAR2 255
  • 使用迁移 API 时 Knex 迁移不起作用

    我是 knex 迁移的新手 在过去的 2 天里我一直在努力让它工作 但没有任何反应 我正在尝试使用以下命令以编程方式运行我的迁移knex migration object 首先使用 cli 我在迁移目录中创建一个迁移文件 这是它的内容 ex
  • 字节数组到 8 位真彩色图像

    我正在尝试从旧电脑游戏中提取一些精灵 我找到了精灵并将它们撕成灰度的单独文件 现在我正在尝试研究如何给它们上色 可执行文件或其数据文件中似乎没有任何调色板数据 再加上游戏所需的颜色深度 256 色 使我相信每个字节实际上是一个 8 位真彩色
  • std::stack 在不同容器上的实现有什么实际区别?

    当实施一个std stack 有几个选项 例如 stack with default underlying deque std stack lt int gt intDequeStack stack with underlying vect
  • 将多个内容 CSS 文件添加到 CKEditor

    如何使用 CKEditor 使用 1 个以上的 css 文件作为内容 CSS 我已经在配置中添加了 bootstrap css config contentsCss css bootstrap min css 我们的设计师创建了第二个 cs
  • 向进程组的所有成员发送信号的最佳方式是什么?

    我想杀死整个进程树 使用常见脚本语言执行此操作的最佳方法是什么 我正在寻找一个简单的解决方案 您没有说明要杀死的树是否是单个进程组 如果树是从服务器启动或 shell 命令行分叉的结果 通常会出现这种情况 您可以使用 GNU ps 发现进程
  • REG 删除批处理文件中包含引号的值?

    我正在尝试删除我制作的批处理文件中的一些注册表项 我在这里找到了以下代码 它运行良好 直到它击中 REG DELETE for F tokens 1 a in REG QUERY KEY findstr I C VALUE do REG D