Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: Fron99 en 2 Abril 2017, 10:58 AM

Título: No se esperaba en este momento. Error [Batch]
Publicado por: Fron99 en 2 Abril 2017, 10:58 AM
Buenas. Tengo un problemilla con un batch. Quiero crear el siguiente batch pero me sale el error de "No se esperaba x en este momento".

cd "%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
(
ECHO md 1
ECHO attrib +h +s 1
ECHO md 0
ECHO attrib +h +s 0
ECHO cd 0
ECHO IF NOT EXIST ".\"%USERNAME% MD ".\"%USERNAME%
ECHO attrib +h +s ".\"%USERNAME%
ECHO cd ".\"%USERNAME%
ECHO for /R %USERPROFILE%\Pictures\ %%x in (*.pdf,*.docx,*.xlsx,*.pptx,*.txt,*.jpg,*.jpeg) do copy %%x ".\"
)>"Inicio.bat"


Quiero crear un Batch que me genere ese batch pero no me lo genera y algunas veces cuando me lo genera es erroneo. ¿Alguien sabria decirme cual es el error.?

Muchas gracias de antelación.
Título: Re: No se esperaba en este momento. Error [Batch]
Publicado por: Eleкtro en 2 Abril 2017, 17:56 PM
Cita de: Fron99 en  2 Abril 2017, 10:58 AM¿Alguien sabria decirme cual es el error.?

Alma de cántaro, tienes que escapar los caracteres reservados/especiales de Batch. Los paréntesis y símbolos de porciento, entre otros.

Aparte de eso, en cada linea tienes argumentos abiertos sin comillas dobles de cierre " "

Prueba así:
ECHO IF NOT EXIST ".\%%USERNAME%%" ^(MD ".\%%USERNAME%%"^)
ECHO attrib +h +s ".\%%USERNAME%%"
ECHO cd ".\%%USERNAME%%"
ECHO for /R "%%USERPROFILE%%\Pictures\" %%%%x in ^(*.pdf,*.docx,*.xlsx,*.pptx,*.txt,*.jpg,*.jpeg^) do copy %%%%x ".\"


Saludos!
Título: Re: No se esperaba en este momento. Error [Batch]
Publicado por: Fron99 en 2 Abril 2017, 23:26 PM
Muchas gracias! ;-) ;-) Estoy empezando en esto del scripting y se me paso eso por encima :laugh: :laugh:
Título: Re: No se esperaba en este momento. Error [Batch]
Publicado por: Fron99 en 3 Abril 2017, 12:13 PM
Buenas. Cuando ahora vuelvo a probar el código me vuelve a salir el mismo error. Y es el código corregido que me pasaste. ¿Alguien tiene idea del porque pasa esto?

Cita de: Eleкtro en  2 Abril 2017, 17:56 PM
Alma de cántaro, tienes que escapar los caracteres reservados/especiales de Batch. Los paréntesis y símbolos de porciento, entre otros.

Aparte de eso, en cada linea tienes argumentos abiertos sin comillas dobles de cierre " "

Prueba así:
ECHO IF NOT EXIST ".\%%USERNAME%%" ^(MD ".\%%USERNAME%%"^)
ECHO attrib +h +s ".\%%USERNAME%%"
ECHO cd ".\%%USERNAME%%"
ECHO for /R "%%USERPROFILE%%\Pictures\" %%%%x in ^(*.pdf,*.docx,*.xlsx,*.pptx,*.txt,*.jpg,*.jpeg^) do copy %%%%x ".\"


Saludos!