2010-12-02 19 views

Respuesta

567
if exist <insert file name here> (
    rem file exists 
) else (
    rem file doesn't exist 
) 

O en una sola línea (aunque sólo sea una sola acción tiene que ocurrir):

if exist <insert file name here> <action> 

por ejemplo, esto abre la libreta en el autoexec.bat, si existe el archivo:

if exist c:\autoexec.bat notepad c:\autoexec.bat 
+8

Si se trata de rutas con espacios: http://stackoverflow.com/questions/138981/how-do-i-test-if-a-file-is-a-directory-in-a-batch-script – Nick

+3

@loopkin - 'else' es válido, vea" if /? " ... "La cláusula ELSE debe ocurrir en la misma línea que el comando después del IF. Por ejemplo: [... numerosos ejemplos de uso ...]" –

+3

@ chris-j Gracias, Chris, tienes razón, parece que el paréntesis tiene que estar en la misma línea que el otro. Eso es lo que estaba haciendo mal. Creo que nunca me acostumbraré a la sintaxis por lotes :( – loopkin

70
C:\>help if 

Realiza procesamiento condicional en programas por lotes.

SI [NO] comando

ERRORLEVEL número SI [NO] cadena1 == cadena2 comando

SI [NO] EXISTE comando nombre de archivo

28

intentar algo así como lo siguiente ejemplo, citado de la salida de IF /? en Windows XP:

 
    IF EXIST filename. (
     del filename. 
    ) ELSE (
     echo filename. missing. 
    ) 

También puede verificar si falta un archivo con IF NOT EXIST.

El comando IF es bastante potente. La salida de IF /? recompensará la lectura cuidadosa. Para el caso, pruebe la opción /? en muchos de los otros comandos incorporados para obtener muchas gemas ocultas.

+5

¿Por qué el '.' al final del nombre del archivo? ¿Es un error tipográfico? – Everyone

+4

Cité el texto de ayuda del comando 'IF' real integrado en CMD.EXE, que tenía esos puntos. No sé por qué los incluyeron, parece inconsistente. Por supuesto, lo que realmente necesita la palabra clave 'EXIST' es un nombre de archivo válido, que puede ser totalmente calificado. Otros comandos usan la expresión idiomática '[unidad:] [ruta] nombre_archivo' en lugar del texto' nombre_de_archivo'. Utilícela aquí, que obviamente es más clara. – RBerteig

Cuestiones relacionadas