ZetCode

Windows 命令提示符参数

最后修改于 2025 年 7 月 14 日

Windows 命令提示符 (cmd.exe) 接受各种参数来控制其启动行为和执行环境。这些参数允许自定义命令会话、脚本执行和命令处理。了解它们对于高级命令行使用和脚本编写至关重要。

Cmd 参数可以指定初始目录、设置环境变量、控制命令回显以及确定命令的处理方式。它们能够实现需要精确控制命令环境的自动化场景。参数可以组合使用以达到特定的行为。

本教程将通过实际示例介绍最重要的 cmd.exe 参数。我们将探讨如何在不同的场景下使用这些参数,从简单的命令执行到复杂的批处理脚本。示例将展示实际使用模式。

基本定义

在深入示例之前,让我们定义与 cmd 参数相关的关键术语

使用 /c 运行命令

/c 参数执行指定的命令然后终止。这对于从另一个程序或脚本运行单个命令很有用。

cmd_c_parameter.bat
@echo off
cmd /c echo Hello from cmd /c
echo Back in original batch file

此示例展示了 /c 如何运行命令然后返回控制。echo 命令在新 cmd 实例中执行,然后该实例关闭。

cmd /c echo Hello from cmd /c

启动一个新 cmd 进程以执行 echo 命令。 /c 确保 cmd 在命令完成后退出。原始批处理文件继续执行。

echo Back in original batch file

演示了在 /c 命令完成后,控制会返回到调用批处理文件。此行在原始上下文中执行。

C:\Users\Jano>cmd_c_parameter.bat
Hello from cmd /c
Back in original batch file

输出显示了由 /c 执行的命令,然后是原始批处理脚本的继续执行。

使用 /k 运行脚本

/k 参数执行命令或脚本,但之后保持 cmd 窗口打开。这对于调试或交互式会话很有用。

cmd_k_parameter.bat
@echo off
echo Creating test script...
echo @echo off > testscript.bat
echo echo This is testscript.bat >> testscript.bat
echo pause >> testscript.bat

start cmd /k testscript.bat
echo Main batch continues after cmd /k

此示例创建了一个简单的批处理文件,然后使用 /k 运行它。testscript 窗口在执行后保持打开状态。

start cmd /k testscript.bat

使用 /k 启动一个新的 cmd 实例,执行 testscript.bat。 /k 在脚本完成后保持窗口打开,允许用户交互。start 命令在单独的窗口中打开它。控制会立即返回到原始批处理文件。

echo Main batch continues after cmd /k

显示原始批处理文件在启动 /k 命令后立即继续执行,而不等待其完成。

C:\Users\Jano>cmd_k_parameter.bat
Creating test script...
Main batch continues after cmd /k

打开一个单独的窗口显示 testscript.bat 的输出。主批处理文件在 testscript 窗口保持活动状态时完成。

使用 /s 处理引号

/s 参数更改 cmd.exe 处理命令字符串中引号的方式。它对于解决嵌套或复杂引用问题很有用。

quotes.cmd
@echo off
echo Without /s:
cmd /c echo Hello there!

echo With /s:
cmd /s /c "echo Hello there!"

此示例展示了 /s 如何影响引号的解释。没有 /s,命令正常处理。使用 /s 时,cmd 对整个命令字符串使用特殊的引号处理规则。

cmd /c echo Hello there!

正常运行 echo Hello there! 并输出文本,不带引号。

cmd /s /c "echo Hello there!"

使用 /s 时,外层引号被剥离,命令被处理,结果输出相同,但使用了不同的引号解析规则。

C:\Users\Jano>quotes.cmd
Without /s:
Hello there!
With /s:
Hello there!

在此示例中,两个输出是相同的。/s 参数在处理需要仔细解析的复杂嵌套引号或特殊字符时更有用。

使用 /v 和 /x 设置环境变量

/v 和 /x 参数控制环境变量的展开方式。/v 启用延迟展开,而 /x 启用命令扩展(默认启用)。

cmd_v_x_parameters.bat
@echo off
echo Testing variable expansion:

set var=Initial
(
    set var=New
    echo Normal expansion: !var!
    cmd /v /c echo Delayed expansion: !var!
)

此示例演示了使用 /v 进行延迟变量展开。它展示了如何在执行时间而不是解析时间访问变量值。

echo Normal expansion: !var!

显示没有延迟展开时的行为。在代码块中,变量在代码块解析时展开,而不是在每行执行时展开。

cmd /v /c echo Delayed expansion: !var!

使用 /v 启用延迟展开,允许在执行时间而不是代码块解析时访问 !var! 的当前值。

C:\Users\Jano>cmd_v_x_parameters.bat
Testing variable expansion:
Normal expansion: !var!
Delayed expansion: New

输出显示了不同的展开时间。延迟展开 (/v) 访问当前值,而正常展开使用解析时值。

来源

Microsoft CMD 参考

本教程通过实际示例介绍了 essential cmd.exe 参数。掌握这些参数可以精确控制命令执行环境和脚本行为。

作者

我叫 Jan Bodnar,是一名充满激情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。到目前为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面有十多年的经验。