我在一个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 ..
在STEP13中,在npminstall命令cd..不起作用之后。它不会返回到父HDC文件夹。我还有其他命令要在父文件夹中运行。我是否犯了一些语法错误?
cd..
npm在Windows上是Windows批处理脚本,具有文件扩展名,.cmd而不是可执行文件,在这种情况下,该脚本会修改当前目录,并且在退出前不会还原该目录。
npm
.cmd
我建议使用代替
cd hui-components-style
命令
pushd hui-components-style
并使用代替
cd ..
popd
有关这两个命令(push和pop目录)的详细信息,请打开命令提示符窗口,然后运行pushd /? 并popd /?显示每个命令的帮助。
pushd /?
popd /?
使用绝对路径可以更好地理解的说明。
C:\Temp\HDC
C:\Temp\HDC\hui-components-style
因此,经过这两个修改的代码是:
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
必须使用命令,call因为它是npm具有完整文件名npm.cmd而不是可执行文件的批处理文件,即
call
npm.cmd
call npm.cmd install --registry http://localhost:23510
否则,将 继续 执行当前批处理文件的npm.cmd命令,并且npmWindows命令处理器将永远不会处理与行之后的当前批处理文件中的任何命令。
另外,也可以使用以下代码:
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 ..\
setlocal 命令执行以下操作:
这些5个步骤总是即使进行setlocal被称为具有1或的4个可能的选项2 EnableExtensions,DisableExtensions,EnableDelayedExpansion,DisableDelayedExpansion以 额外地 改变命令扩展和/或延迟的环境变量扩展的状态。
setlocal
EnableExtensions
DisableExtensions
EnableDelayedExpansion
DisableDelayedExpansion
现在,批处理文件npm.cmd可以更改当前工作目录,可以添加,删除和修改环境变量,可以启用/禁用命令扩展,以及可以启用/禁用延迟扩展的用法。
但是在下一个命令 endlocal 之后,对命令处理环境的所有修改都无关紧要,因为 endlocal
这两个命令的名称实际上是不言自明的: