Первая командная строка может быть:
@set "PATH=%~dp0node_modules\.bin;%PATH%"
Эта командная строка добавляет к локальной PATH
переменную среды в начале пути подкаталога .bin
в подкаталоге node_modules
в каталоге пакетного файла вместо текущего каталога .
%~dp0
всегда расширяется путь к каталогу пакетного файла, заканчивающийся обратной косой чертой. По этой причине %~dp0
следует всегда объединять с именем папки / файла без дополнительной обратной косой черты, как здесь.
Можно было бы использовать %CD%\
вместо %~dp0
, чтобы добавить путь к подкаталогу.bin
в подкаталоге node_modules
в текущем каталоге до локальная 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 после его анализа. См. Также: Как синтаксический анализ сценариев интерпретатора команд Windows (CMD.EXE)?
@
в начале командной строки приводит к тому, что командный процессор Windows cmd.exe
обрабатывает пакетный файлне выводит командную строку после ее анализа. Командная строка с командой set
и с %*
больше не нуждаются @
в начале строки с @echo off
в верхней части командного файла.
@echo off
set "PATH=%~dp0node_modules\.bin;%PATH%"
%*
Открыть Командная строка , запустите call /?
и прочитайте справку, объясняющую, как можно ссылаться на аргументы пакетного файла в пакетном файле.
См. также SS64.com , который имеет ссылку дляКоманды Windows CMD и Linux Shell.