Foro de elhacker.net

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

Código:
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
¿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í:
Código:
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?

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