如何删除匹配含空格字符串的多个注册表值?
删除含空格字符串的多个注册表值方法
你原来的代码只适用于无空格的注册表值,核心问题是for /f默认按空格分割字符串,导致带空格的键名被拆成了多个部分。看你给出的Reg Query输出,键名和后续内容是用逗号分隔的,所以我们可以把分隔符改成逗号,就能完整捕获带空格的键名。
修改后的代码如下:
For /f "delims=, tokens=1" %%k in ('Reg Query "HKLM\SOFTWARE\testkey" 2^>NUL ^| Find /i "0.3200.0"') do ECHO Reg Delete "HKLM\SOFTWARE\testkey" /v "%%k" /f
关键说明:
delims=,:指定逗号为分割符,这样%%k会获取逗号前的完整内容(包含空格)tokens=1:只取分割后的第一部分,也就是完整的注册表值名称
运行时先通过ECHO预览要执行的删除命令,确认输出正确后,去掉ECHO即可实际执行删除操作。
针对你给出的Reg Query输出:
TestValueToRemoveWithoutSpaces,0.3200.0,es,b03f5f7f11d50a3a REG_BINARY F2243A58D787DA01 Test Value To Remove With Spaces,0.3200.0,es,b03f5f7f11d50a3a REG_BINARY F2243A58D787DA01
修改后的代码会正确识别两个值名称:TestValueToRemoveWithoutSpaces和Test Value To Remove With Spaces,并生成对应的删除命令。
内容的提问来源于stack exchange,提问作者Mike0101
相关产品推荐
相关产品推荐

