(Batch) Si existe archivo entonces..

Iniciado por Enemy, 2 Mayo 2013, 05:28 AM

0 Miembros y 1 Visitante están viendo este tema.

Enemy

Buenas, por empezar, mucho de Batch no conozco, lo minimo asi que sepan entender.
lo mio es VB.

Ahora, la pregunta es, de que forma podria hacer un batch preguntando si en caso de que exista un archivo con un nombre especifico en un ruta, haga ciertas funciones como renombrar y mover o si el archivo tiene otro nombre, haga las mismas funciones, por ejemplo:

Si archivo es igual a MI ARCHIVO ABC entonces
renombrar
mover
ejecuto un script de un programa
mover
renombrar

Si archivo es igual a MI ARCHIVO 123 entonces
renombrar
mover
ejecuto un script de un programa
mover
renombrar
exit


El caso es que no se si usar "If exist" or "if archivo = then" (aunque tampoco entiendo mucho los condicionales de batch o como usar el "exist") en este caso, como seria que debo hacer el batch para preguntar si el nombre de un archivo en una ruta es igual a "XXX" entonces hacer ciertas funciones "o" si es igual a "XXXXX" hacer ciertas funciones.

Gracias de antemano.

Eleкtro

Viniendo de VB no debería ser dificil acostumbrarse a la sintaxis de Batch, símplemente de VB quédate con el "IF" y el "ELSE", y olvídate de todo lo demás como "then", "and", "or", o "elseif".

Primero de nada deberías leer la ayuda de cada comando en la consola...
IF /?
Rename /?
Move /?





Código (dos) [Seleccionar]
:: Comprobar si un archivo existe

Set "Archivo=C:\archivo.txt"

If exist "%Archivo%" (
 REM El archivo existe...
) ELSE (
  REM El archivo no existe...
)


Código (dos) [Seleccionar]
:: Comparar un string

Set "Archivo=C:\archivo.txt"

If /I "%Archivo%" EQU "C:\MI ARCHIVO 123.txt" (
 REM El nombre es igual...
) ELSE (
  REM El nombre no es igual...
)


Código (dos) [Seleccionar]
:: Comprobar si un archivo existe y comparar el nombre

Set "Archivo=C:\archivo.txt"

If exist "%Archivo%" If /I "%Archivo%" EQU "C:\MI ARCHIVO 123.txt" (
   Rename "%Archivo%" "otro nombre"
   move "%Archivo%" "otro nombre"
   "ruta\nombre script.bat"
) ELSE (
  REM El archivo no existe o el nombre no es igual...
)


Saludos.








Enemy

#2
hmm gracias de todas formas y ya mire un poco mejor los ejemplos que da el cmd.

asi quedaria:

Código (dos) [Seleccionar]
@echo off

cd..

Set "Mapa=Dota v6.77c.w3x"
Set "MapaAI=Dota v6.77c AI 1.4b Rev2.w3x"


If exist "%mapa%" (

Ren "%Mapa%" "File.mpq"
Move "File.mpq" "Files\"
Files\Winmpq.exe S file05
move "Files\File.mpq" ".\"
Ren "File.mpq" "%Mapa%"

) Else (

Ren "%MapaAI%" "File.mpq"
Move "File.mpq" "Files\"
Files\Winmpq.exe S file05
move "Files\File.mpq" ".\"
Ren "File.mpq" "%MapaAI%"
)

exit


Pero como seria en caso de que no exista ninguno de los 2?, ahi toma por seguro que si no esta el primero, el segundo hace las funciones, agrego otro "IF" ?

Eleкtro

#3
Citar, agrego otro "IF" ?

Podrías, pero no es del todo necesario...


@echo off

cd..

If exist "Dota v6.77c.w3x" (Set "Mapa=Dota v6.77c.w3x")
If exist "Dota v6.77c AI 1.4b Rev2.w3x" (Set "Mapa=Dota v6.77c AI 1.4b Rev2.w3x")

If Defined MAPA (
   Ren "%Mapa%" "File.mpq"
   Move "File.mpq" "Files\"
   Files\Winmpq.exe S file05
   move "Files\File.mpq" ".\"
   Ren "File.mpq" "%Mapa%"
)

exit


saludos








Enemy

Muchas gracias Electro H. Me vino muy bien la ayuda.