Como dizer EXIST para olhar também nos diretórios de caminho no arquivo em lotes do Windows

0

Estou tentando fazer essa coisa simples no windows mas sempre falha e acho que a causa é que não está procurando na variável PATH, como devo fazer?

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
)
Nicola Peluchetti
fonte

Respostas:

2

Sua versão do Windows provavelmente tem where.exe:

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

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

o || operador funciona como no Linux sh ; seu oposto é &&.


Para versões mais antigas:

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

Sempre que você ligar com call :havecomm lessc, vai definir %comm% para o caminho completo, ou vazio se não for encontrado.

Se você não souber a extensão exata e quiser verificar todas as possibilidades, a versão mais longa funcionará:

: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
grawity
fonte