Estoy usando REG DELETE en un BAT, y en algunas lineas no se aplica, gracias
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?
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.
:-( Disculpe, he entrado pocas veces en este foro, buscare las normas
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 PMif %extension% == nul exit
Si dejases la variable %extension% vacía, Te dará error y se cerrará el script.
Acostumbra a usar comillas dobles:
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:
@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
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
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 (http://foro.elhacker.net/empty-t355338.0.html)
PD:
Creo que me quedó algún extraño bug por corregir, Si no le pones cosas raras funciona xD.
Saludos
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
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