Sto scrivendo un file batch per Windows e utilizzare il comando 7z
(7-Zip). Ho messo la posizione di esso nel PERCORSO. C'è un modo relativamente semplice per verificare se il comando è disponibile?Verificare se il comando è disponibile nel file batch
risposta
Un tentativo di eseguire 7z.exe
restituirà un %errorlevel%
di 9009 se il comando non viene trovato. Puoi verificarlo.
7z.exe
if %errorlevel%==9009 echo Command Not Found
Un modo migliore sarebbe '7z.exe> nul 2> & 1 | comando echo non trovato', credo. – Joey
Il modo migliore sarebbe IMO: http://stackoverflow.com/a/27014081/1724702 –
Sì, aprire una finestra di comando e digitare "7z" (presumo che sia il nome dell'eseguibile). Se ricevi un errore che dice che il comando o l'operazione non sono riconosciuti allora sai che l'istruzione path ha un problema in qualche parte, altrimenti non lo fa.
Yup,
@echo off
set found=
set program=7z.exe
for %%i in (%path%) do if exist %%i\%program% set found=%%i
echo "%found%"
Questo non funzionerà con i percorsi citati che contengono spazi. – Joey
Grazie, perché dici 'set found ='? – rynd
@ Joey c'è una soluzione semplice per questo. Usa le virgolette. Tuttavia, questo non funzionerà se l'estensione del comando (exe, bat) non viene specificata mentre la soluzione accettata lo farà. – khattam
vorrei non consiglia di eseguire il comando per verificare se è disponibile per l'uso (ad esempio, disponibile in PATH
variabile d'ambiente). Quindi penso che l'approccio migliore sarebbe utilizzando il comando where
:
where 7z.exe >nul 2>nul
if %errorlevel%==1 (
@echo 7z.exe not found in path.
[do something about it]
)
Il >nul
e 2>nul
sono opzionali; utilizzato qui per impedire la visualizzazione dell'output standard e dell'output di errore standard generato dal comando where
.
Aggiornamento: Perché non si potrebbe desiderare di eseguire:
- Non si potrebbe davvero non so cosa fa il programma
- Il programma potrebbe avere effetti collaterali - si potrebbe fare qualcosa che si sa, ma non si vuole - come eliminare i file, ricreare la cache, ecc
- Il programma potrebbe essere alta intensità di risorse/lenta
Il problema è determinare se il programma è disponibile o meno, quindi è sufficiente controllare lo stesso.
Scommessa 'SE' condizione:' IF NOT ERRORLEVEL 0'. Vedi ['SE'] (http://ss64.com/nt/if.html). – jpmc26
Perché non consiglieresti di eseguirlo? È in generale o in questo caso particolare? – quimnuss
Un sacco di motivi per non eseguire: effetti collaterali, potresti non sapere cosa fa il programma, il programma potrebbe essere ad uso intensivo di risorse/lento, ecc. –
- 1. Come verificare se un file non è vuoto nel batch
- 2. Come verificare se un percorso è un file o una directory nel file batch di Windows?
- 3. Comando di sospensione nel file batch?
- 4. Verificare se il file è di sola lettura e modificare il file batch di Windows
- 5. Verificare se il file è già nel controllo sorgente
- 6. Se il problema ELSE comando batch
- 7. Come verificare rapidamente se il server URL è disponibile
- 8. Come verificare se il file è un'immagine
- 9. Come verificare se il file è binario?
- 10. Come verificare in cmake se un dato file di intestazione è disponibile per il progetto C++
- 11. comando vengono ignorati dopo il comando formica in file batch
- 12. Verificare se una variabile di ambiente è definita senza estensioni di comando e senza utilizzare un file batch?
- 13. Programma batch su per verificare se il processo esiste
- 14. Determina se WindowServer è disponibile?
- 15. verificare se la connessione Internet è disponibile con C#
- 16. Come verificare se esiste un eseguibile nel% PATH% da un file batch di Windows?
- 17. Come posso verificare se CSS calc() è disponibile usando JavaScript?
- 18. Verificare se il file esiste ed eseguire un file batch in PowerShell?
- 19. Il manuale in modalità org è disponibile nel file .org?
- 20. come utilizzare il comando di ricerca shell adb in batch
- 21. Verificare se il ruolo esiste nel DB?
- 22. Verificare se il valore esiste nel dataTable?
- 23. Il file batch si interrompe dopo il primo comando
- 24. Creazione di un file batch con il comando "IF"
- 25. Test per l'attributo file nel file batch
- 26. Verificare se un comando è in PATH/eseguibile come processo
- 27. Come ottenere l'attuale utilizzo della CPU e la memoria disponibile nel file batch?
- 28. Come eseguire il comando 'msbuild' da un file batch
- 29. Come verificare se un file/dir è scrivibile in script batch
- 30. Utilizzare il timeout del file batch senza comando echo?
Non eseguire. Il modo migliore sarebbe IMO: http://stackoverflow.com/a/27014081/1724702 –