Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Enemy en 2 Mayo 2013, 05:28 am



Título: (Batch) Si existe archivo entonces..
Publicado por: Enemy en 2 Mayo 2013, 05:28 am
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:

Código:
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.


Título: Re: (Batch) Si existe archivo entonces..
Publicado por: Eleкtro en 2 Mayo 2013, 06:52 am
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...
Código:
IF /?
Rename /?
Move /?



Código
  1. :: Comprobar si un archivo existe
  2.  
  3. Set "Archivo=C:\archivo.txt"
  4.  
  5. If exist "%Archivo%" (
  6.  REM El archivo existe...
  7. ) ELSE (
  8.   REM El archivo no existe...
  9. )

Código
  1. :: Comparar un string
  2.  
  3. Set "Archivo=C:\archivo.txt"
  4.  
  5. If /I "%Archivo%" EQU "C:\MI ARCHIVO 123.txt" (
  6.  REM El nombre es igual...
  7. ) ELSE (
  8.   REM El nombre no es igual...
  9. )

Código
  1. :: Comprobar si un archivo existe y comparar el nombre
  2.  
  3. Set "Archivo=C:\archivo.txt"
  4.  
  5. If exist "%Archivo%" If /I "%Archivo%" EQU "C:\MI ARCHIVO 123.txt" (
  6.    Rename "%Archivo%" "otro nombre"
  7.    move "%Archivo%" "otro nombre"
  8.    "ruta\nombre script.bat"
  9. ) ELSE (
  10.   REM El archivo no existe o el nombre no es igual...
  11. )

Saludos.


Título: Re: (Batch) Si existe archivo entonces..
Publicado por: Enemy en 2 Mayo 2013, 16:14 pm
hmm gracias de todas formas y ya mire un poco mejor los ejemplos que da el cmd.

asi quedaria:

Código
  1. @echo off
  2.  
  3. cd..
  4.  
  5. Set "Mapa=Dota v6.77c.w3x"
  6. Set "MapaAI=Dota v6.77c AI 1.4b Rev2.w3x"
  7.  
  8.  
  9. If exist "%mapa%" (
  10.  
  11. Ren "%Mapa%" "File.mpq"
  12. Move "File.mpq" "Files\"
  13. Files\Winmpq.exe S file05
  14. move "Files\File.mpq" ".\"
  15. Ren "File.mpq" "%Mapa%"
  16.  
  17. ) Else (
  18.  
  19. Ren "%MapaAI%" "File.mpq"
  20. Move "File.mpq" "Files\"
  21. Files\Winmpq.exe S file05
  22. move "Files\File.mpq" ".\"
  23. Ren "File.mpq" "%MapaAI%"
  24. )
  25.  

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" ?


Título: Re: (Batch) Si existe archivo entonces..
Publicado por: Eleкtro en 2 Mayo 2013, 16:42 pm
Citar
, agrego otro "IF" ?

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

Código:
@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


Título: Re: (Batch) Si existe archivo entonces..
Publicado por: Enemy en 4 Mayo 2013, 01:53 am
Muchas gracias Electro H. Me vino muy bien la ayuda.