BAT, algun REG DELETE no se borra

Iniciado por quico5, 18 Agosto 2012, 19:37 PM

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

quico5

Estoy usando REG DELETE en un BAT, y en algunas lineas no se aplica, gracias

Código (DOS) [Seleccionar]

echo on

set extension=lsc

if %extension% == nul exit

REG ADD HKEY_CURRENT_USER\Software\Classes\%extension%_portable\shell\open\command /v "" /t REG_EXPAND_SZ /d "%homedrive%\Portables instalados\LogoSoft\LogoSoft.exe" %1 /F
REG ADD HKEY_CLASSES_ROOT\%extension%_portable\DefaultIcon /v "" /t REG_EXPAND_SZ /d "%homedrive%\Portables instalados\LogoSoft\LogoSoft.exe" /F
REG ADD HKEY_CURRENT_USER\Software\Classes\.%extension% /v "" /t REG_SZ /d %extension%_portable /F

pause>nul

rem borrar

REG DELETE HKEY_CLASSES_ROOT\%extension%_portable\DefaultIcon /F /VA
REG DELETE HKEY_CURRENT_USER\Software\Classes\%extension%_portable\shell\open\command /F /VA
REG DELETE HKEY_CURRENT_USER\Software\Classes\.%extension% /F /VA rem no borra?

REG DELETE HKEY_CLASSES_ROOT\.%extension% /F /VA rem no borra?
REG DELETE HKEY_CLASSES_ROOT\%extension%_portable /F /VA
REG DELETE HKEY_CURRENT_USER\Software\Classes\.%extension% /F /VA

REG DELETE HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%extension% /F /VA rem no borra?
REG DELETE HKEY_LOCAL_MACHINE\SOFTWARE\Classes\%extension%_portable /F /VA rem no borra?

Eleкtro

#1
Desde Enero hasta Agosto has tenido tiempo para leer las normas del tablón.

Siento ser estricto, Pero haz el favor de modificar tu pregunta con las correcciones adecuadas o me veré obligado a cerrar este post.  :P

Los códigos deben ir dentro de la etiqueta code.

PD: Tampoco estaría mal que te molestases en describir el problema en el post, Y no en el título del topic.

Saludos.








quico5

 :-( Disculpe, he entrado pocas veces en este foro, buscare las normas

Eleкtro

#3
Cita de: quico5 en 19 Agosto 2012, 01:10 AM
:-( Disculpe, he entrado pocas veces en este foro, buscare las normas

Bien, Ya has colaborado un poco, Ahora me toca colaborarte con lo que pueda:

Cita de: quico5 en 18 Agosto 2012, 19:37 PM
Código (DOS) [Seleccionar]
if %extension% == nul exit
Si dejases la variable %extension% vacía, Te dará error y se cerrará el script.
Acostumbra a usar comillas dobles:
Código (DOS) [Seleccionar]
if "%extension%"=="nul" (exit)

Por cierto el nul no se si lo has puesto con la intención de comprobar si la variable está vacía, Pero en ese caso, No se comprueba con "nul".

Sobre las claves que agregas, No entiendo porque las agregas de tipo EXPAND_SZ, Sirve igual, Pero no estás agregando ninguna variable de entorno en las claves de tipo EXPAND_SZ, Quizás has entendido mal el concepto de las cádenas expandibles...

Aparte, La primera clave que intentas añadir no se puede crear de la manera que quieres, Porque estás usando la variable reservada %1, La cual NO se llega a añadir.

En la parte donde borras las claves, No he buscado donde cometes el error, Porque es todo mucho más sencillo que eso, Aquí tienes:

Código (dos) [Seleccionar]
@Echo ON

set extension=lsc
If NOT defined extension (exit)

REM Añadir
REG ADD "HKCR\%extension%_portable\DefaultIcon" /d "%homedrive%\Portables instalados\LogoSoft\LogoSoft.exe,0" /F
REG ADD "HKCU\Software\Classes\%extension%_portable\shell\open\command" /d "%homedrive%\Portables instalados\LogoSoft\LogoSoft.exe \"%%1\"" /F
REG ADD "HKCU\Software\Classes\.%extension%" /d "%extension%_portable" /F
pause

REM Eliminar
REG DELETE "HKCR\%extension%_portable\DefaultIcon" /F
REG DELETE "HKCU\Software\Classes\%extension%_portable" /F
REG DELETE "HKCU\Software\Classes\.%extension%" /F
pause
Exit


Espero que te sirva

Salu2








quico5

#4
Muchas gracias por la ayuda


CitarIf NOT defined extension (exit)
¿Exit con parentesis? dedidi usar esa pregunta porque haciendo pruebas borre todos los archivos del escritorio, nada importante por suerte


Me estoy basando en la forma que windows 7 asocia un archivo a un programa para crear los asociados con archivos portables y he descubierto que pasaba con regedit, por lo que busque en google en archivo.reg forzosamente tenia que pasar los datos en binario generando las entradas en EXPAND_SZ para que funcionase el asociamiento de archivos, y buscando encntre que podia evitar el binario en los mismos BAT meidante EXPAND_SZ


viste que tenia mas entradas a borrar que a crear, parece que en el registro se crean entradas a mayores, mi idea es que si elijo borrar el portable con BAT tambien borrar esas entradas para evitar errores raros por tener el regedit a medias



habia optado el poner:
Citarset extension=lsc
en vez
Citarset extension="lsc"
porque en windows 7 almacena "lsc" con comillas incluidas, o ese efecto me pintaba el .BAT en pantalla dañandome la orden y al quitarle las comillas a la variable entonces funcionaba

gracias de nuevo por su atención

Eleкtro

Cita de: quico5 en 19 Agosto 2012, 15:05 PM¿Exit con parentesis?
Cualquier comando debe ir entre parentesis despues de la condición (Es la manera correcta), Aunque si solo es un comando (Exit) no tiene importancia, Pero si es una serie de comandos, Sí.

Quizás este script te sirva para sacar algo más en claro sobre la asociación de archivos:
ASSOC7 (Crea, Asocia, Y desasocia tipos de archivos) by Elektro H@cker

PD: Creo que me quedó algún extraño bug por corregir, Si no le pones cosas raras funciona xD.

Saludos








quico5

Tiene muy buena pinta, muchas gracias, despues lo miro con calma...
algo habia leido sobre ASSOC, lo probre pero no le encontrara mucho sentido

¿quizas no borraba bien con \VA? ¿para que sirve esta opción? ¿y /F?
CitarAl borrar las tres entradas, y darle abrir al archivo.ext me devuelve
CitarEste archivo no tiene ningún programa asociado para realizar esta acción. Instale el programa que corresponda o, si ya lo tiene instalado, cree una asociación en el panel de control de Programas predeterminados.

y al borrar manualmente o por .REG
Citar[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.lsc]
pasa al estado por defecto
CitarAl borrar esta entrada pasa al mensaje normal cuando windows desconoce .ext

Windows no puede abrir este archivo:

Archivo demo.lsc

Para poder abrir el archivo, se debe iniciar en Windows qué programa desea usar para tal fin. Windows puede conectarse a internet para buscar automáticamente, o se puede seleccionar manualmente en una lista de programas en el equipo.

¿Qué desea hacer?
-Usar el servicio web para buscar el programa correcto
-Seleccionar un programa de la lista de programas instalados

quico5

#7
Estoy probando ASSOC7.BAT y parece muy comodo ¿lo puedo controlar desde otro BAT? parece que si, creo que (ruta\ASSOC7.exe -a .url ruta\portable.exe) solo una cosa, no coje el icono asociado al notepad o su propio icono, pero supongo que eso ha de ser facil, voy a probar a llamar cosas que no sean del propio windows, como un portable