[Pregunta tipica] Que falla en este script?

Iniciado por davoker, 11 Junio 2016, 21:17 PM

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

davoker

Buenas, este script le funciona a un compi pero a mi no, de hecho tengo abandonado el batch y ya apenas recuerdo, solo puedo buscar informacion y no doy con el fallo, pongo el script:

@echo off
md buenos
cd roms
for %r in (*.zip) do (
 echo "%%~nr"
 move "..\temporal\%%~nr.avi" "..\buenos\" /y
)
cd..
pause


Logicamente el archivo .bat va en la carpeta principal, junto a la carpeta roms y temporal, vamos que esta en su sitio.

Se ve para el que entiende que es lo que hace, pero lo explico igual, que nadie se ofenda xD

Basicamente crea una carpeta llamada "buenos", coge los videos de la carpeta temporal que tengan el mismo nombre que los archivos .zip de la carpeta "roms", y los mueve a la carpeta "buenos" que se creo al princpio.

El error que salta es "La sintaxis del comando no es correcta", uso windows 10, no se si tendra que ver, ni idea vaya, probe a ejecutarlo como administrador, a mover las carpetas y todo a diferentes sitios, por si acaso, pero nada, siempre el mismo fallo.

Alguna idea? gracias!

davoker

Una ayudita cuando podais payos  ;D es que este script deberia funcionar, a mi colega le funciona, asi que no entiendo porque no me rula a mi, si es de lo mas sencillo, igual se me escapa algo, o se os ocurre un script parecido para hacer lo mismo no se jeje

Venga un saludin.

hckcrck

Citar"La sintaxis del comando no es correcta"
no te sale nada mas? haz un copy paste
Para seguir la senda:

*observa al maestro,
sigue al maestro,
camina con el maestro,
ve a través del maestro,
conviértete en el maestro.

https://www.youtube.com/watch?v=08dphYPKLyE

DarK_FirefoX

¿Cual sintaxis es la no correcta?

Quita el:

@echo off

Y mira a ver en que linea es la que esta saltando el error!

Salu2s

hckcrck

Aqui esta el problema
for %r in (*.zip) do (
este es el mensaje completo que me manda la terminal
CitarZ:\root\Escritorio>./problema.bat
Archivo no encontrado.

Error de sintaxis
Can't recognize '*.zip' as an internal or external command, or batch script.
Can't recognize 'do ' as an internal or external command, or batch script.
"%~nr"
Pulse cualquier tecla para continuar...
Para seguir la senda:

*observa al maestro,
sigue al maestro,
camina con el maestro,
ve a través del maestro,
conviértete en el maestro.

https://www.youtube.com/watch?v=08dphYPKLyE

DarK_FirefoX

Creo que deberías usar:

%%r

en la línea:

for %%r in (*.zip) do (

Salu2s


Eleкtro

Cita de: DarK_FirefoX en 14 Junio 2016, 18:37 PMCreo que deberías usar:

%%r

en la línea:

for %%r in (*.zip) do (

Efectivamente ese es el error.

Es imposible que a su compañero le funcione como el OP mencionó, puesto que está obligado a dar error de sintaxis por el error que comentaste.

Las variables de FOR deben ser nombradas con dos símbolos de porcentaje para poder expandirla. Solo se debe hacer lo contrario, es decir, escribir un único símbolo de porcentaje, si colocamos y ejecutamos el código directamente en una instancia abierta de la CMD.

Saludos








davoker

Vale solucionado chavales, la cosa queda asi, porgo primero el script que fallaba:

@echo off
md buenos
cd roms
for %%r in (*.zip) do (
  echo "%%~nr"
  move "..\temporal\%%~nr.avi" "..\buenos\" /y
)
cd..
pause


Decir que en la linea
for %r in (*.zip) do (
me confundi y en vez de poner %%r puse %r, pero fue al escribirlo aqui, en el .bat estaba bien, no funcionaba, el script que ha funcionado es este:


@echo off
md buenos
cd roms
for %%r in (*.zip) do (
  echo "%%~nr"
  move /y "..\temporal\%%~nr.avi" "..\buenos\"
)
cd..
pause


El fallo estaba en /y, es decir, la linea mal era esta:

  move "..\temporal\%%~nr.avi" "..\buenos\" /y
La linea buena esta y la que soluciono el problema:

  move /y "..\temporal\%%~nr.avi" "..\buenos\"

El colega no lo probo, solo tenia la seguridad de que le funcionaba, hablando con el hoy se dio cuenta de que puso mal el /y y me lo comentó xD

Asi que solucionado el tema, gracias gente por la ayuda ^^