我创建了一个批处理文件,用于查询将数据保存到CSV文件中的数据。 我正在搜索的数据被保存为注册表中的子键(子键内的值无关紧要)。 我有以下查询:
reg query "HKCU\Software\Gizmo International\HCM\IPC Config" >>%userprofile%\desktop\info.csv
这就是结果:
HKEY_CURRENT_USER\Software\Gizmo International\HCM\IPC Config\g1322222_127.0.0.1
但我只想获得子密钥:g1322222_127.0.0.1
(在\IPC Config
下)而不是整个路径,然后将其保存在CSV文件的新单元格中。
原因是我们必须在大量计算机上搜索子密钥(它是每台PC中的唯一编号,并保存在子密钥\ IPC Config下)并在Excel中构建数据库,但是漫长的路径挤满了CSV文件。
有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
如果您可以将reg查询输出转换为变量,则可以使用FOR
命令轻松删除最后一节。这纯粹是一个示例,向您展示如何完成它。
@echo off
set "var=HKEY_CURRENT_USER\Software\Gizmo International\HCM\IPC Config\g1322222_127.0.0.1"
FOR %%G IN ("%var%") do set "newvar=%%~nxG"
另一个选项是使用字符串替换的SET命令使用一些技巧。
@echo off
set "var=HKEY_CURRENT_USER\Software\Gizmo International\HCM\IPC Config\g1322222_127.0.0.1"
set "first=%var:\=" & set "last=%"
echo %last%
pause
这是我对你想要做的尝试。我真的不喜欢没有更多信息的编码。
@echo off
FOR /F "delims=" %%G IN ('reg query "HKCU\Software\Gizmo International\HCM\IPC Config"') DO (
FOR %%H IN ("%%~G") DO >>info.csv echo %%~nxH
)
答案 1 :(得分:0)
不确定你写的代码是什么,因为你没有发布它,但通常这样的代码应该这样做。
@echo off
Set "string=some\path\info\string"
For %%a in (%string:\= %) do "set value=%%a"
Echo %value%
您要将set "string..
替换为reg query
结果的结果。
请注意,这不会允许值中包含空格。
答案 2 :(得分:0)
如果您只查找子项名称且只有一个 *,那么您可以使用它:
axios-mock-adapter
如果有多个子项,(*或者您希望在csv输出的双引号内返回单个名称),那么您需要@Echo Off
Set "HKCU=&H80000001"
Set "RKEY=Software\Gizmo International\HCM\IPC Config"
For /F "Tokens=2 Delims={}" %%A In (
'WMIC Class StdRegProv Call EnumKey "%HKCU%"^,"%RKEY%" 2^>Nul^|Find "sNames"'
) Do (Echo %%~A)>>"%UserProfile%\Desktop\info.csv"
Pause
修改强>
如果您希望每个都没有引号,那么您可以使用此修改:
) Do Echo %%A>>"%UserProfile%\Desktop\info.csv"