Dee*_*dhy 3 batch-file node.js npm
我在一个 bat 文件中有以下命令。
echo STEP12
cd HDC
git config --global url."https://".insteadOf git://
echo STEP13
cd hui-components-style
npm install --registry http://localhost:23510
cd ..
Run Code Online (Sandbox Code Playgroud)
在 STEP13 中,在 npm install 命令cd..不起作用之后。它不会回到父 HDC 文件夹。我有其他命令要在父文件夹中运行。我犯了一些语法错误吗?
npm在 Windows 上是一个带有文件扩展名的 Windows 批处理脚本,.cmd而不是一个可执行文件,在这种情况下,它会修改当前目录并且在退出之前不会恢复它。
我建议使用而不是
cd hui-components-style
Run Code Online (Sandbox Code Playgroud)
命令
pushd hui-components-style
Run Code Online (Sandbox Code Playgroud)
并使用代替
cd ..
Run Code Online (Sandbox Code Playgroud)
命令
popd
Run Code Online (Sandbox Code Playgroud)
有关 push 和 pop directory 这两个命令的详细信息,请打开命令提示符窗口并运行pushd /? 并popd /?显示每个命令的帮助。
使用绝对路径更好地理解的解释。
C:\Temp\HDC.pushd hui-components-style保存C:\Temp\HDC在堆栈上并设置为新的当前目录C:\Temp\HDC\hui-components-style。npm 执行修改当前目录。popd获取C:\Temp\HDC并将此目录设置为当前目录,独立于哪个目录是当前目录。所以这两个修改的代码是:
echo STEP12
cd HDC
git config --global url."https://".insteadOf git://
echo STEP13
pushd hui-components-style
call npm.cmd install --registry http://localhost:23510
popd
Run Code Online (Sandbox Code Playgroud)
必须使用命令,call因为它是npm一个具有完整文件名的批处理文件npm.cmd而不是可执行文件,即
call npm.cmd install --registry http://localhost:23510
Run Code Online (Sandbox Code Playgroud)
否则当前批处理文件的命令处理将继续进行,npm.cmd并且当前批处理文件中的任何命令npm都不会被 Windows 命令处理器处理。有关执行批处理文件的各种方法的详细信息,请参阅有关如何调用当前目录上一级的批处理文件的答案?另请参阅有关从另一个批处理文件调用批处理文件时未执行批处理文件中的复制命令的答案,但在我双击时会执行。
或者,也可以使用以下代码:
echo STEP12
cd HDC
git config --global url."https://".insteadOf git://
echo STEP13
cd hui-components-style
setlocal
call npm.cmd install --registry http://localhost:23510
endlocal
cd ..\
Run Code Online (Sandbox Code Playgroud)
命令setlocal执行以下操作:
那些五个步骤总是即使进行setlocal被称为一个或两个的四个可能的选项EnableExtensions,DisableExtensions,EnableDelayedExpansion,DisableDelayedExpansion以额外地改变命令扩展和/或延迟的环境变量扩展的状态。
现在批处理文件npm.cmd可以改变当前工作目录,可以添加、删除和修改环境变量,可以启用/禁用命令扩展,可以启用/禁用延迟扩展的使用。
但是在下一个命令endlocal之后,所有对执行环境的修改都无关紧要,因为endlocal
有关证明的示例,请参阅上的答案
这两个命令的名称实际上是不言自明的:
| 归档时间: |
|
| 查看次数: |
6110 次 |
| 最近记录: |