如何转义 DOS 批处理文件中的双冒号?
How do you escape a double-colon in a DOS batch file?
我需要 运行 DOS 批处理文件中包含双冒号的命令并将输出设置为变量。像这样
set /a TDR = C:\InCharge\CONSOLE\smarts\bin\dmctl -s SSA-SAM invoke SM_System::SM-System nameToAddr %SM_OBJ_InstanceName%
我不断收到 "Missing operator"。我认为这是由于那些双冒号。我该如何逃避这些?我试过反斜杠,但没有用。我试过将整个命令放在双引号中,但也没有用。
我可以 运行 命令本身,即没有 "set /a TDR" 并且输出是正确的。但是我需要将该输出用作变量的值,因此 "set /a"
dmctl 的正常输出是这样的
{ "10.28.112.74" }
我正在使用 dmctl 获取主机名的 IP 地址。我想一旦我得到输出我就可以去掉括号和引号,但我还没有想出如何获取输出。
提前致谢。
冒号不需要转义。有关哪些字符需要转义以及如何转义的详细信息,请参阅 Batch files - Escape Characters。
"Missing operator" 被返回是因为 SET /A
只适用于算术运算,所以它正在寻找算术运算符。
要将命令的输出分配给变量,您必须使用 FOR 命令,类似于以下内容:
for /f "delims=" %%i in ('C:\InCharge\CONSOLE\smarts\bin\dmctl -s SSA-SAM invoke SM_System::SM-System nameToAddr %SM_OBJ_InstanceName%') do set myresult=%%i
见Reading the output of a command into a batch file variable
至trim字符串首尾3个字符:
set mystring=%mystring:~3,-3%
这将删除输出中分隔 IP 地址的花括号、空格和引号。
我在 DOS - String Manipulation 找到了这个。
我需要 运行 DOS 批处理文件中包含双冒号的命令并将输出设置为变量。像这样
set /a TDR = C:\InCharge\CONSOLE\smarts\bin\dmctl -s SSA-SAM invoke SM_System::SM-System nameToAddr %SM_OBJ_InstanceName%
我不断收到 "Missing operator"。我认为这是由于那些双冒号。我该如何逃避这些?我试过反斜杠,但没有用。我试过将整个命令放在双引号中,但也没有用。
我可以 运行 命令本身,即没有 "set /a TDR" 并且输出是正确的。但是我需要将该输出用作变量的值,因此 "set /a"
dmctl 的正常输出是这样的
{ "10.28.112.74" }
我正在使用 dmctl 获取主机名的 IP 地址。我想一旦我得到输出我就可以去掉括号和引号,但我还没有想出如何获取输出。
提前致谢。
冒号不需要转义。有关哪些字符需要转义以及如何转义的详细信息,请参阅 Batch files - Escape Characters。
"Missing operator" 被返回是因为 SET /A
只适用于算术运算,所以它正在寻找算术运算符。
要将命令的输出分配给变量,您必须使用 FOR 命令,类似于以下内容:
for /f "delims=" %%i in ('C:\InCharge\CONSOLE\smarts\bin\dmctl -s SSA-SAM invoke SM_System::SM-System nameToAddr %SM_OBJ_InstanceName%') do set myresult=%%i
见Reading the output of a command into a batch file variable
至trim字符串首尾3个字符:
set mystring=%mystring:~3,-3%
这将删除输出中分隔 IP 地址的花括号、空格和引号。
我在 DOS - String Manipulation 找到了这个。