Como dizer EXIST para procurar também nos diretórios de caminho no arquivo de lote do windows

0

Estou tentando fazer algo simples no windows, mas ele sempre falha e eu acho que a causa é que ele 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
)
    
por Nicola Peluchetti 14.05.2012 / 18:26

1 resposta

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ê chamá-lo com call :havecomm lessc , ele definirá %comm% como seu 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
    
por 14.05.2012 / 18:44