Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 更改目录命令cd..在npm安装后无法在批处理文件中工作_Node.js_Batch File_Npm - Fatal编程技术网

Node.js 更改目录命令cd..在npm安装后无法在批处理文件中工作

Node.js 更改目录命令cd..在npm安装后无法在批处理文件中工作,node.js,batch-file,npm,Node.js,Batch File,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 .. 在步骤13中,npm安装后,命令cd..不起作用。它不会返回到父HDC文件夹。父文件夹中还有其他命令要运行。是否有语法错误?npm在Windows

我在一个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 ..

在步骤13中,npm安装后,命令
cd..
不起作用。它不会返回到父HDC文件夹。父文件夹中还有其他命令要运行。是否有语法错误?

npm
在Windows上是一个Windows批处理脚本,文件扩展名为
.cmd
,不是一个可执行文件,在这种情况下,它会修改当前目录,并且在退出之前不会还原它

我建议使用,而不是使用

cd hui-components-style
cd ..
命令

pushd hui-components-style
popd
使用而不是

cd hui-components-style
cd ..
命令

pushd hui-components-style
popd
有关两个命令的详细信息–push和pop目录–打开命令提示窗口,然后运行
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
    
    必须使用命令
    call
    ,因为
    npm
    是一个批处理文件,具有完整的文件名
    npm.cmd
    ,而不是一个可执行文件,即

    call npm.cmd install --registry http://localhost:23510
    
    否则,当前批处理文件的命令处理将在
    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 ..\
    
    命令setlocal执行以下操作:

  • 它推送堆栈上当前目录的路径
  • 它将命令扩展的状态推送到堆栈上
  • 它推动堆栈上的延迟扩展状态
  • 它将当前环境变量表的内存地址推送到堆栈上
  • 它在内存中创建当前环境变量表的副本,并激活此新环境变量表
  • 即使使用四个可能选项中的一个或两个调用
    EnableExtensions
    DisableExtensions
    EnableDelayedExpansion
    ,也始终可以完成这五个步骤,
    DisableDelayedExpansion
    另外更改命令扩展和/或延迟环境变量扩展的状态

    现在批处理文件
    npm.cmd
    可以更改当前工作目录,可以添加、删除和修改环境变量,可以启用/禁用命令扩展,可以启用/禁用延迟扩展的使用

    但在下一个命令endlocal之后,对执行环境的所有这些修改都无关紧要,因为endlocal

  • 删除当前环境表
  • 从堆栈中弹出上一个环境表的内存地址,并使用该地址恢复初始环境变量
  • 从堆栈中弹出延迟扩展的状态,并相应地禁用/启用延迟扩展
  • 从堆栈中弹出命令扩展的状态,并相应地禁用/启用命令扩展
  • 从堆栈中弹出上一个当前目录路径,并将当前目录设置为此路径以还原当前目录
  • 如需有关示例,请参阅上的答案

    • (当前工作目录管理示例)
    • (环境变量和延迟扩展管理示例)
    这两个命令的名称实际上是自我解释的:

    • setlocal。。。基于当前环境设置本地执行环境
    • endlocal。。。结束本地执行环境并恢复以前的环境

    npm
    在Windows上是一个Windows批处理脚本,文件扩展名为
    .cmd
    ,不是一个可执行文件,在这种情况下,它会修改当前目录,并且在退出之前不会还原它

    我建议使用,而不是使用

    cd hui-components-style
    
    cd ..
    
    命令

    pushd hui-components-style
    
    popd
    
    使用而不是

    cd hui-components-style
    
    cd ..
    
    命令

    pushd hui-components-style
    
    popd
    
    有关两个命令的详细信息–push和pop目录–打开命令提示窗口,然后运行
    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
    
    必须使用命令
    call
    ,因为
    npm
    是一个批处理文件,具有完整的文件名
    npm.cmd
    ,而不是一个可执行文件,即

    call npm.cmd install --registry http://localhost:23510
    
    否则,当前批处理文件的命令处理将在
    npm.cmd
    上继续进行,并且当前批处理文件中
    npm
    行之后的任何命令都不会由Windows命令处理器处理。有关执行批处理文件的各种方法的详细信息,请参阅上的答案和上的答案

    或者也可以是pos