PROBLEMA CON UN PROGRAMA EN BATCH

Iniciado por Xnyk0X96, 31 Marzo 2012, 03:27 AM

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

Xnyk0X96

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

Eleкtro

#1
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.








Xnyk0X96

OK gracias ya se me va ocurriendo como solucionarlo pero lo que dijistes sobre redireccionar no lo he entendido :-\ :D

Eleкtro

#3
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%".








Xnyk0X96

ok ya lo cambiare y muchas gracias por la ayuda