Я пытаюсь сделать эту простую вещь в Windows, но она всегда терпит неудачу, и я думаю, что причина в том, что она не смотрит в переменную PATH, как мне это сделать?

IF EXIST lessc.cmd (
    lessc --yui-compress bootstrap.less > ../css/bootstrap.min.css
) ELSE (
    echo Error: lessc not found. Install Node.js then: npm install -g less
)

1 ответ1

2

Ваша версия для Windows, вероятно, имеет where.exe:

where /q lessc || (
    echo Errrrror.
    goto :eof
)

lessc --yui-compress bootstrap.less > ../css/bootstrap.min.css

|| оператор работает как в Linux sh ; противоположность - && .


Для более старых версий:

:havecomm
  set "comm=%~$PATH:1"
  goto :eof

Всякий раз, когда вы вызываете его с помощью call :havecomm lessc , он будет устанавливать %comm% на свой полный путь или будет пустым, если не найден.

Если вы не знаете точное расширение и хотите проверить все возможности, более длинная версия будет работать:

:havecomm
  set comm=
  if not "%~$PATH:1"=="" (
    set "comm=%~$PATH:1"
  ) else (
    for %%e in (%PATHEXT%) do (
      for %%i in (%1%%e) do (
        if not "%%~$PATH:i"=="" (
          set "comm=%%~$PATH:i"
          goto :eof
  ))))
  goto :eof

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .