在批处理文件中运行下一行之前,让命令等待确认

时间:2018-02-15 00:41:28

标签: batch-file command-line proxy command-prompt

我已经搜索了我认为常见问题的高低,但只能找到有关用户确认的答案,而不是系统确认。

我希望以下命令按顺序运行,在转到下一个命令之前等待响应:

npm config set https-proxy http://example.com:8080
npm config set proxy http://example.com:8080
npm config set sslVerify false
npm config set strict-ssl false
set HTTP_PROXY=http://example.com:8080
set HTTPS_PROXY=http://example.com:8080

我已在新行上按顺序将命令添加到批处理文件中,但在执行时不会在每个命令上暂停以等待响应。在系统确认之前,如何强制脚本等待每个命令?

1 个答案:

答案 0 :(得分:1)

npmdoSomething等不合格的名称可能会映射到使用各种语言编写的脚本,包括批处理文件。使用call命令调用这些命令,cmd.exe将始终等待启动任何子进程。

.exe分散在多个目录中并不常见,这些目录会使路径环境变量膨胀,因此很多安装会将别名脚本放在添加到路径环境变量的单个目录中。路径,当你调用命令时,它会找出要运行的可执行文件并启动它们。

使用包装器脚本来简化可执行调用,添加一些日志记录或临时将命令映射到不同版本(升级/测试)也很常见。

在npm的情况下,我认为它主要用JavaScript编写,因此必须启动适当的脚本引擎来运行npm命令。这可以从批处理脚本启动,也可以由OS根据它具有的任何文件扩展名自动调用。从一个版本或安装到下一个版本或安装的详细信息可能会有所不同,通常对从命令行调用它们的临时用户来说并不重要,但脚本行为可能会有明显不同。

除非您使用完全限定的路径/文件名从命令脚本启动某些内容,并且通常即使您这样做,也应该默认使用call命令来调用它。然后涵盖了上述所有情况,您的脚本将始终按预期运行。

call npm config set https-proxy http://example.com:8080
call npm config set proxy http://example.com:8080
call npm config set sslVerify false
call npm config set strict-ssl false
set HTTP_PROXY=http://example.com:8080
set HTTPS_PROXY=http://example.com:8080

请注意,脚本或程序仍然可以将工作传递给另一个进程然后立即返回,但无论是以交互方式还是从脚本启动,这种行为通常都是相同的。