我试图实现以下内容,但在一个.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 "$@"
我已经得到了第一部分(我想),但不知道如何做第二部分,并没有成功地在谷歌的解决方案。
REM Add your local node_modules bin to the path for this command
SET PATH=.\node_modules\.bin;%PATH%
1条答案
按热度按时间xyhw6mcr1#
第一个命令行可以是:
此命令行在local
PATH
环境变量的开头添加了批处理文件的目录而不是 * 当前目录 * 中的node_modules
中的.bin
的路径。%~dp0
始终扩展到以反斜杠结尾的批处理文件目录路径。因此,%~dp0
应该始终与文件夹/文件名连接在一起,而不需要像这里一样添加反斜杠。可以使用
%CD%\
而不是%~dp0
将 * 当前目录 * 中的node_modules
中的.bin
的路径添加到localPATH
环境变量。但请注意,* 当前目录 * 可能总是与批处理文件目录不同,因此在这里很可能不好。%CD%
扩展为不以反斜杠结尾的目录路径字符串,但 * 当前目录 * 是驱动器的根目录,在这种情况下,%CD%
扩展为驱动器号+冒号+反斜杠。因此,%CD%
的使用需要命令行:第二个命令行可以是:
这个非常短的命令行导致解释传递到批处理文件的所有参数,参数0除外,作为Windows命令处理器在解析后执行的命令行。标签:How does the Windows Command Interpreter (CMD.EXE) parse scripts?
@
在命令行的开头导致Windows命令处理器cmd.exe
处理批处理文件时在解析命令行后不输出命令行。带有set
和%*
的命令行不再需要@
,@echo off
位于批处理文件的顶部。打开一个command prompt,运行
call /?
并阅读输出帮助,解释如何在批处理文件中引用批处理文件参数。另请参阅SS64.com,其中有Windows CMD和Linux Shell命令的参考。