Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: Xnyk0X96 en 31 Marzo 2012, 03:27 AM

Título: PROBLEMA CON UN PROGRAMA EN BATCH
Publicado por: Xnyk0X96 en 31 Marzo 2012, 03:27 AM
hola
hace unos dias me inicie en programacion utilizando batch y decidi crear mi primer programa que sirve para modificar archivos
empece creando un codigo que agrega o quita atributos a los archivos y hay un pequeño fallo que no se como solucionarlo y es que por ejemplo intentas añadir un atributo a un archivo oculto y aparece un mensaje diciendo "el archivo oculto no se restablece" y yo he puesto que al elegir la opcion de añadir un atributo salte un mensaje diciendo "el archivo ha sido modificado exitosamente". de esta manera, me terminan saliendo dos mensajes contradictorios (no es un fallo muy importante pero quiero hacerlo lo mejor posible)
alguien sabria como hacer que para cuando no se pueda cambiar un archivo no saliese el mensaje de "el archivo ha sido modificado exitosamente"?
este es el codigo:
Código (dos) [Seleccionar]

::>>>>>>>>>>>>>>>>>>>>>INICIO<<<<<<<<<<<<<<<<<<<<<<<<
:ini
echo.
color 0A
cls
echo Escriba el nombre seguido de la extensión del archivo al que desea modificar (Ej: texto.txt). Si el nombre tiene mas de una palabra escribalo entre comillas (Ej: "Nuevo texto.txt")_
set/p file=
::>>>>>>>>>>>>>>>>>>1ªELECCIÓN<<<<<<<<<<<<<<<<<<<<<<<
:eleccion
cls
color 0A
echo Eliga una opcion(si desea quitar un atributo escriba "del" seguido del atributo a quitar):
echo 1^>Archivo de solo lectura
echo 2^>Archivo de almacenamiento
echo 3^>Archivo del sistema
echo 4^>Archivo oculto
echo 5^>Elegir otro archivo
set/p op=
::>>>>>>>>>>>>>>>>CONDICIONANTES<<<<<<<<<<<<<<<<<<<<<
if %op%==1 goto atr
if %op%==2 goto ata
if %op%==3 goto ats
if %op%==4 goto ath
if %op%==5 goto ini
if %op%==del1 goto del1
if %op%==del2 goto del2
if %op%==del3 goto del3
if %op%==del4 (goto del4) else cls && color 04 && echo ERROR. La opcion elegida no existe. && pause && goto eleccion
::>>>>>>>>>>>>>>AÑADIR SOLO LECTURA<<<<<<<<<<<<<<<<<<
:atr
cls
attrib +r %file%
echo El archivo ha sido modificado exitosamente!
pause>nul
cls
goto eleccion2
::>>>>>>>>>>>AÑADIR DE ALMACENAMIENTO<<<<<<<<<<<<<<<<
:ata
cls
attrib +a %file%
echo El archivo ha sido modificado exitosamente!
pause>nul
cls
goto eleccion2
>>>>>>>>>>>>>>>>AÑADIR DE SISTEMA<<<<<<<<<<<<<<<<<<<<
:ats
cls
attrib +s %file%
echo El archivo ha sido modificado exitosamente!
pause>nul
cls
goto eleccion2
::>>>>>>>>>>>>>>>AÑADIR OCULTO<<<<<<<<<<<<<<<<<<<<<<<
:ath
cls
attrib +h %file%
echo El archivo ha sido modificado exitosamente!
pause>nul
cls
goto eleccion2
::>>>>>>>>>>>>QUITAR SOLO LECTURA<<<<<<<<<<<<<<<<<<<<
:del1
cls
attrib -r %file%
echo El archivo ha sido modificado exitosamente!
pause>nul
cls
goto eleccion2
::>>>>>>>>>>QUITAR DE ALMACENAMIENTO<<<<<<<<<<<<<<<<<
:del2
cls
attrib -a %file%
echo El archivo ha sido modificado exitosamente!
pause>nul
cls
goto eleccion2
::>>>>>>>>>>>>>QUITAR DE SISTEMA<<<<<<<<<<<<<<<<<<<<<
:del3
cls
attrib -s %file%
echo El archivo ha sido modificado exitosamente!
pause>nul
cls
goto eleccion2
::>>>>>>>>>>>>>>>QUITAR OCULTO<<<<<<<<<<<<<<<<<<<<<<<
:del4
cls
attrib -h %file%
echo El archivo ha sido modificado exitosamente!
pause>nul
cls
goto eleccion2
::>>>>>>>>>>>>>>>>2ªELECCIÓN<<<<<<<<<<<<<<<<<<<<<<<<<
:eleccion2
cls
color 0A
echo Que desea hacer?
echo 1^>Añadir/Quitar otro atributo
echo 2^>Elegir otro archivo para modificar
echo 3^>Salir
set/p op2=
::>>>>>>>>CONDICIONANTES DE 2ªELECCIÓN<<<<<<<<<<<<<<<
if %op2%==1 goto eleccion
if %op2%==2 goto ini
if %op2%==3 (exit) else cls && color 04 && echo ERROR. La opcion elegida no existe. && pause && goto eleccion2
Título: Re: PROBLEMA CON UN PROGRAMA EN BATCH
Publicado por: Eleкtro en 31 Marzo 2012, 05:35 AM
Hola Xnyk0X96, Veo que eres nuevo en el foro, Pero la próxima vez usa las etiquetas de código  :P.

- Para modificar los atributos de un archivo oculto, Primero tienes que desocultarlo:

Código (dos) [Seleccionar]
@Echo OFF
Attrib +h test.txt
Attrib -h +r test.txt
Attrib +h test.txt
pause


- Para evitar la salida de error de un comando, Dbes redireccionar.

Código (DOS) [Seleccionar]

@Echo OFF
Dir qwerty 2>nul
pause


Salu2.
Título: Re: PROBLEMA CON UN PROGRAMA EN BATCH
Publicado por: Xnyk0X96 en 31 Marzo 2012, 19:26 PM
OK gracias ya se me va ocurriendo como solucionarlo pero lo que dijistes sobre redireccionar no lo he entendido :-\ :D
Título: Re: PROBLEMA CON UN PROGRAMA EN BATCH
Publicado por: Eleкtro en 31 Marzo 2012, 19:40 PM
Cita de: Xnyk0X96 en 31 Marzo 2012, 19:26 PM
lo que dijistes sobre redireccionar no lo he entendido :-\ :D

Esto te servirá: http://ss64.com/nt/syntax-redirection.html

Te pongo otro ejemplo:

Código (dos) [Seleccionar]
@Echo off
Echo: Este comando muestra el error: | More
Echo: Type sfhiushiuf.txt | More
Type sfhiushiuf.txt
Pause 1>Nul

Cls
Echo: En cambio ahora ya no muestra error: | More
Echo: Type sfhiushiuf.txt | More
Type sfhiushiuf.txt 2>Nul
Pause 1>Nul
Exit


Salu2.


EDITO:

Por cierto fíjate en esta línea del code que posteaste:
Código (dos) [Seleccionar]
>>>>>>>>>>>>>>>>AÑADIR DE SISTEMA<<<<<<<<<<<<<<<<<<<<

No creo que de problemas ya que está entre una llamada a una etiqueta y una etiqueta, Pero por precaución la dejaría como el resto:
Código (dos) [Seleccionar]
::>>>>>>>>>>>>>>>>AÑADIR DE SISTEMA<<<<<<<<<<<<<<<<<<<<


Además, deja esto así:
Código (dos) [Seleccionar]
set/p file=
Set File=%File:"=%


Y en donde pones %File% cambialos por "%File%".
Título: Re: PROBLEMA CON UN PROGRAMA EN BATCH
Publicado por: Xnyk0X96 en 1 Abril 2012, 19:31 PM
ok ya lo cambiare y muchas gracias por la ayuda