小编Las*_*lko的帖子

如何在 Windows XP CMD.EXE 命令行中的变量中设置/使用空字符串值?

使用 SET 为变量设置一个空值在 Windows XP .CMD 脚本中效果很好。但是,当直接从命令行使用时,相同的 SET 命令在相同的 CMD 解释器中表现不同:

尝试在 CMD.EXE 命令行中测试它:

C:\>set Q=

C:\>echo %Q%
%Q%

C:\>echo "%Q%"
"%Q%"

C:\>set Q=/Q

C:\>echo %Q%
/Q

C:\>echo "%Q%"
"/Q"
Run Code Online (Sandbox Code Playgroud)

尝试使用这样的 .CMD 脚本对其进行测试:

set Q=
echo %Q%
echo "%Q%"
set Q=/Q
echo %Q%
echo "%Q%"
Run Code Online (Sandbox Code Playgroud)

运行它:

C:\>c.cmd

C:\>set Q=

C:\>echo
ECHO is on.

C:\>echo ""
""

C:\>set Q=/Q

C:\>echo /Q
/Q

C:\>echo "/Q"
"/Q"
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

这是雷德蒙德的一个好笑话,还是对这种差异有任何合理的解释?

当 .CMD 脚本中的行在命令行中使用时行为不同时,我应该如何测试它们?

如何在 CMD 命令行中将变量正确设置为空字符串值,以及如何引用该变量以便获得该空字符串?

windows command-line windows-xp cmd.exe

10
推荐指数
3
解决办法
4万
查看次数

如何在 cmd.exe /c 参数中转义 "?

我正在尝试使用 Windows 7 的 CMD /C 从 Perl 运行命令。该命令从提示符运行时可以正常工作,但需要引用其参数:

C:\>"C:\Program Files (x86)\gs\uninstgs.exe" "C:\Program Files (x86)\gs\gs8.63\uninstal.txt"
Run Code Online (Sandbox Code Playgroud)

没有引号,它不起作用。

如果我尝试通过 CMD /C 运行它,我发现无法强制 CMD.EXE 将带引号的字符串作为参数传递给 exe 文件。这些不起作用:

C:\>C:\Windows\System32\cmd.exe /C "C:\Program Files (x86)\gs\uninstgs.exe" "C:\Program Files (x86)\gs\gs8.63\uninstal.txt"
'C:\Program' is not recognized as an internal or external command, operable program or batch file.

C:\>C:\Windows\System32\cmd.exe /C "C:\Program Files (x86)\gs\uninstgs.exe C:\Program Files (x86)\gs\gs8.63\uninstal.txt"
'C:\Program' is not recognized as an internal or external command, operable program or batch file.

C:\>C:\Windows\System32\cmd.exe /C "C:\Program Files (x86)\gs\uninstgs.exe" \"C:\Program Files (x86)\gs\gs8.63\uninstal.txt\"
'C:\Program' is …
Run Code Online (Sandbox Code Playgroud)

windows command-line cmd.exe

9
推荐指数
1
解决办法
2万
查看次数

标签 统计

cmd.exe ×2

command-line ×2

windows ×2

windows-xp ×1