REG ADD "REG_MULTI_SZ" 带有转义“\”字符的分隔符
REG ADD "REG_MULTI_SZ" separator with escaped "\" character
我一直在尝试使用 reg add 命令向注册表添加 "REG_MULT_SZ" 条目。
示例 1:
REG ADD "HKLM\SOFTWARE\TESTKEY" /v "TESTVALUE" /t "REG_MULTI_SZ" ^
/d "TEST_ENTRY1[=11=]TEST_ENTRY2[=11=]TEST_ENTRY3" /f /reg:64
示例 2:
REG ADD "HKLM\SOFTWARE\TESTKEY" /v "TESTVALUE" /t "REG_MULTI_SZ" /s "[=12=]" ^
/d "TEST_ENTRY1[=12=]TEST_ENTRY2[=12=]TEST_ENTRY3" /f /reg:64
示例 1 命令有效,因为该命令的默认分隔符确实是 "[=13=]"
,但如果我尝试使用 /s
命令(示例 2)设置分隔符,即使它是等于默认分隔符它不起作用。
我尝试使用 ... /s "\[=16=]"
... 转义 "\"
字符,但没有成功。
有人知道如何将 "\"
字符传递给 REG ADD "REG_MULTI_SZ"
命令 /s
吗?
此致,
风神
reg add /?
/s Specify one character that you use as the separator in your data
string for REG_MULTI_SZ. If omitted, use "[=10=]" as the separator.
指定一个字符(例如€
)如下:
REG ADD "HKLM\SOFTWARE\TESTKEY" /v "TESTVALUE" /t "REG_MULTI_SZ" /s € ^
/d "TEST_ENTRY1€TEST_ENTRY2€TEST_ENTRY3" /f /reg:64
注意 ^
和换行只是为了更好的可读性,应用单行
REG ADD "HKLM\SOFTWARE\TESTKEY" /v "TESTVALUE" /t "REG_MULTI_SZ" /s € /d "TEST_ENTRY1€TEST_ENTRY2€TEST_ENTRY3" /f /reg:64
重述:如果使用reg add ... /t REG_MULTI_SZ
- 使用默认分隔符(省略
/s
开关)然后:
[=19=]
用于分隔多个数据实例;
- 数据中每个
0
(零)前无 \
(反斜杠)的字面意思。
- 带
/s Ж
分隔符(其中Ж
是唯一字符,即使定义/s 0
也保留)然后:
Ж
用于分隔多个数据实例;
- 没有机会摆脱这个分隔符的命运并在数据中按字面意义使用
Ж
字符。
示例:我无法记录我对转义的解释:仅基于实验。示例:假设您应该在下一个场景中创建一个 REG_MULTI_SZ
注册表值,其中包含 _numbered 个文件夹:
testgen
testgen
testgen
然后您需要覆盖默认分隔符。使用 /se
开关覆盖 reg query
中的默认分隔符(否则,输出可能会变得有点混乱):
d:\bat>set "_regKey=HKCU\Software\Test Key"
d:\bat>set "_regData=testgen€testgen€testgen"
d:\bat>REG ADD "%_regKey%" /v TESTVALUE /t REG_MULTI_SZ /s € /d "%_regData%" /f /reg:64
The operation completed successfully.
d:\bat>REG QUERY "%_regKey%" /v TESTVALUE
HKEY_CURRENT_USER\Software\Test Key
TESTVALUE REG_MULTI_SZ testgen[=14=]testgen[=14=]testgen
d:\bat>REG QUERY "%_regKey%" /v TESTVALUE /se @
HKEY_CURRENT_USER\Software\Test Key
TESTVALUE REG_MULTI_SZ testgen@testgen@testgen
d:\bat>
结语:一条棘手的答案之路 - 请参阅编辑历史记录 (tl;dr)。
我一直在尝试使用 reg add 命令向注册表添加 "REG_MULT_SZ" 条目。
示例 1:
REG ADD "HKLM\SOFTWARE\TESTKEY" /v "TESTVALUE" /t "REG_MULTI_SZ" ^
/d "TEST_ENTRY1[=11=]TEST_ENTRY2[=11=]TEST_ENTRY3" /f /reg:64
示例 2:
REG ADD "HKLM\SOFTWARE\TESTKEY" /v "TESTVALUE" /t "REG_MULTI_SZ" /s "[=12=]" ^
/d "TEST_ENTRY1[=12=]TEST_ENTRY2[=12=]TEST_ENTRY3" /f /reg:64
示例 1 命令有效,因为该命令的默认分隔符确实是 "[=13=]"
,但如果我尝试使用 /s
命令(示例 2)设置分隔符,即使它是等于默认分隔符它不起作用。
我尝试使用 ... /s "\[=16=]"
... 转义 "\"
字符,但没有成功。
有人知道如何将 "\"
字符传递给 REG ADD "REG_MULTI_SZ"
命令 /s
吗?
此致,
风神
reg add /?
/s Specify one character that you use as the separator in your data
string for REG_MULTI_SZ. If omitted, use "[=10=]" as the separator.
指定一个字符(例如€
)如下:
REG ADD "HKLM\SOFTWARE\TESTKEY" /v "TESTVALUE" /t "REG_MULTI_SZ" /s € ^
/d "TEST_ENTRY1€TEST_ENTRY2€TEST_ENTRY3" /f /reg:64
注意 ^
和换行只是为了更好的可读性,应用单行
REG ADD "HKLM\SOFTWARE\TESTKEY" /v "TESTVALUE" /t "REG_MULTI_SZ" /s € /d "TEST_ENTRY1€TEST_ENTRY2€TEST_ENTRY3" /f /reg:64
重述:如果使用reg add ... /t REG_MULTI_SZ
- 使用默认分隔符(省略
/s
开关)然后:[=19=]
用于分隔多个数据实例;- 数据中每个
0
(零)前无\
(反斜杠)的字面意思。
- 带
/s Ж
分隔符(其中Ж
是唯一字符,即使定义/s 0
也保留)然后:Ж
用于分隔多个数据实例;- 没有机会摆脱这个分隔符的命运并在数据中按字面意义使用
Ж
字符。
示例:我无法记录我对转义的解释:仅基于实验。示例:假设您应该在下一个场景中创建一个 REG_MULTI_SZ
注册表值,其中包含 _numbered 个文件夹:
testgen
testgen
testgen
然后您需要覆盖默认分隔符。使用 /se
开关覆盖 reg query
中的默认分隔符(否则,输出可能会变得有点混乱):
d:\bat>set "_regKey=HKCU\Software\Test Key"
d:\bat>set "_regData=testgen€testgen€testgen"
d:\bat>REG ADD "%_regKey%" /v TESTVALUE /t REG_MULTI_SZ /s € /d "%_regData%" /f /reg:64
The operation completed successfully.
d:\bat>REG QUERY "%_regKey%" /v TESTVALUE
HKEY_CURRENT_USER\Software\Test Key
TESTVALUE REG_MULTI_SZ testgen[=14=]testgen[=14=]testgen
d:\bat>REG QUERY "%_regKey%" /v TESTVALUE /se @
HKEY_CURRENT_USER\Software\Test Key
TESTVALUE REG_MULTI_SZ testgen@testgen@testgen
d:\bat>
结语:一条棘手的答案之路 - 请参阅编辑历史记录 (tl;dr)。