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
)

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.