Estoy escribiendo un archivo por lotes para Windows y uso el comando 7z
(7-Zip). He puesto su ubicación en el PATH. ¿Hay una manera relativamente fácil de verificar si el comando está disponible?Compruebe si el comando está disponible en el archivo por lotes
Respuesta
Un intento de ejecutar 7z.exe
devolverá un %errorlevel%
de 9009 si no se encuentra el comando. Puedes verificar eso.
7z.exe
if %errorlevel%==9009 echo Command Not Found
Una manera más agradable sería '7z.exe> nul 2> & 1 | echo Command not found', supongo. – Joey
La mejor forma en que IMO sería: http://stackoverflow.com/a/27014081/1724702 –
Sí, abra una ventana de comandos y escriba "7z" (supongo que es el nombre del ejecutable). Si recibe un error que dice que el comando u operación no se reconoce, entonces sabe que la instrucción de ruta tiene un problema en alguna parte, de lo contrario no lo hace.
Sí,
@echo off
set found=
set program=7z.exe
for %%i in (%path%) do if exist %%i\%program% set found=%%i
echo "%found%"
Esto no funcionará con las rutas entre comillas que contienen espacios. – Joey
Gracias, ¿por qué dices 'set found ='? – rynd
@Joey hay una solución fácil para eso. Usa comillas dobles Sin embargo, esto no funcionará si la extensión de comando (exe, bat) no se especifica mientras que la solución aceptada lo hará. – khattam
me habría no recomiendan ejecutar el comando para comprobar si está disponible para su uso (por ejemplo, disponible en PATH
variable de entorno). Así que creo que el mejor enfoque sería utilizar el comando where
:
where 7z.exe >nul 2>nul
if %errorlevel%==1 (
@echo 7z.exe not found in path.
[do something about it]
)
El >nul
y 2>nul
son opcionales; utilizado aquí para evitar la visualización de la salida estándar y la salida de error estándar generada por el comando where
.
actualización: ¿Por qué es posible que no desee ejecutar:
- Es posible que no realmente no sabe lo que hace el programa
- El programa podría tener efectos secundarios - que podría hacer algo que usted sabe, pero no quiere - como borrar archivos, vuelva a crear la caché, etc.
- El programa podría ser un recurso intensivo/lenta
El problema es determinar si el programa está disponible o no, por lo que debe verificarlo.
Apostando la condición 'IF':' IF NOT ERRORLEVEL 0'. Ver ['IF'] (http://ss64.com/nt/if.html). – jpmc26
¿Por qué no recomendarías ejecutarlo? ¿Es en general o en este caso particular? – quimnuss
Hay muchas razones para no ejecutar: efectos secundarios, es posible que no sepas qué hace el programa, el programa puede ser intensivo en recursos/lento, etc. –
- 1. Compruebe si el archivo ya está abierto
- 2. WP7 compruebe si Internet está disponible
- 3. Delphi: compruebe si el archivo está en uso
- 4. Compruebe si la aplicación está disponible en Android Market
- 5. ¿Comando inactivo en archivo por lotes?
- 6. Compruebe si el archivo existe en ksh
- 7. Crear un archivo por lotes con el comando "IF"
- 8. compruebe si el archivo existe en php
- 9. compruebe si el archivo de entrada archivado está vacío jquery
- 10. compruebe si la conexión a Internet está disponible con C#
- 11. compruebe si un dominio está disponible o no usando PHP?
- 12. Comando Archivo por lotes PAUSA no funciona
- 13. Compruebe si hay un módulo node.js disponible
- 14. Compruebe si un archivo está abierto
- 15. Comprueba si el intento uri está disponible
- 16. Compruebe si "exec" está deshabilitado
- 17. Compruebe si el tiempo frontal está habilitado en el dispositivo
- 18. Compruebe si el usuario está actualmente en línea (en vivo)
- 19. sólo lo hacen si el archivo por lotes días ...
- 20. C compruebe si el archivo existe
- 21. Ejecutando rake desde el archivo por lotes
- 22. Ejecutar archivo por lotes en el fondo
- 23. Compruebe si un archivo está bloqueado en Java
- 24. Ejecutando cadena variable como comando en el proceso por lotes
- 25. ¿Por qué el Manifiesto no está disponible en el constructor?
- 26. Django compruebe si el campo está en blanco?
- 27. Compruebe si el espacio está en una cadena
- 28. Compruebe si el objeto está en una lista de objetos
- 29. Compruebe si existe un archivo en el servidor
- 30. compruebe si un archivo está abierto en Python
No ejecutar. La mejor manera IMO sería: http://stackoverflow.com/a/27014081/1724702 –