如何创建此Windows Shell脚本的等效Windows版本?

我正在尝试通过.bat文件来实现以下目标。设置路径后,它将在第一个参数之后执行所有参数。

# Add your local node_modules bin to the path for this command
export PATH="./node_modules/.bin:$PATH"

# execute the rest of the command
exec "$@"

我已经掌握了第一部分(我认为),但是不知道如何去做第二部分,并且没有成功地使用Google搜索解决方案。

REM Add your local node_modules bin to the path for this command
SET PATH=.\node_modules\.bin;%PATH%
book1842 回答:如何创建此Windows Shell脚本的等效Windows版本?

第一个命令行可能是:

@set "PATH=%~dp0node_modules\.bin;%PATH%"

此命令行在批处理文件目录中子目录PATH中子目录.bin的路径开始处添加到 local node_modules环境变量而不是当前目录

%~dp0总是扩展到以反斜杠结尾的批处理文件目录路径。出于这个原因,%~dp0应该始终与文件夹/文件名连接在一起,如此处所述,不要附加反斜杠。

可以使用%CD%\代替%~dp0当前目录的子目录.bin中添加子目录node_modules的路径到 local PATH环境变量。但是请注意,当前目录可能总是与批处理文件目录不同,因此在这里很可能不好。

%CD%扩展为不以反斜杠结尾的目录路径字符串,但当前目录是驱动器的根目录,在这种情况下,%CD%扩展为驱动器号+冒号+反斜杠。因此,%CD%的使用将需要命令行:

@if not "%CD:~-1%" == "\" (set "PATH=%CD%\node_modules\.bin;%PATH%") else set "PATH=%CD%node_modules\.bin;%PATH%"

第二个命令行可能是:

@%*

该非常短的命令行导致解释传递给该批处理文件的所有参数,但参数0除外,作为命令行在解析后由Windows命令处理器执行。另请参阅:How does the Windows Command Interpreter (CMD.EXE) parse scripts?

命令行开头的

@导致Windows命令处理器cmd.exe处理批处理文件,在解析后不输出命令行。带有命令set%*的命令行不再需要@,而位于批处理文件顶部的@echo off行的开头。

@echo off
set "PATH=%~dp0node_modules\.bin;%PATH%"
%*

打开command prompt,运行call /?并阅读输出帮助,解释如何在批处理文件中引用批处理文件参数。

另请参见SS64.com,其中包含Windows CMD和Linux Shell命令的参考。

本文链接:https://www.f2er.com/3132405.html

大家都在问