2012-03-05 22 views
6

Little Willis aquí. Estoy intentando utilizar un script por lotes para editar una clave de registro existente que se utiliza al hacer doble clic en un archivo .jar. El problema es que los datos que intento ingresar contienen comillas, pero también necesito comillas para que se considere una cadena.Agregar una clave de registro en Windows con comillas necesarias en los datos usando una secuencia de comandos por lotes

Ejemplo:

reg add "HKEY_LOCAL_MACHINE\Software\Classes\jarfile\shell\open\command" /v "" /t REG_EXPAND_SZ /d "C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %* /f 

Cuando corro que en un archivo por lotes las impresiones ventana de CMD out "Error: Demasiados parámetros de línea de comandos"

Así que para hacer este sencillo. Deseo agregar una clave de registro con "C: \ Archivos de programa \ Java \ jre7 \ bin \ javaw.exe" -jar "% 1"% * como los datos que incluyen las citas y el% 1 y% * exactamente como están no convertido a ninguna instrucción o cadena real.

EDIT:

El registro normalmente añadidos se realiza mediante el uso de esta cadena de línea de comandos:

ftype jarfile="C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %* 

que funciona bien en la línea de comandos, pero al igual que el código se indica a continuación cuando utilicé esto en una el script por lotes no aparece "% 1" y% *.

Respuesta

13

emplear estas últimas para escapar de las cotizaciones internas, es decir:

reg add "HKEY_LOCAL_MACHINE\Software\Classes\jarfile\shell\open\command" /v "" /t REG_EXPAND_SZ /d "\"C:\Program Files\Java\jre7\bin\javaw.exe\" -jar \"%1\" %*" /f 
+0

su respuesta es reducir a la mitad sobre mi pregunta. El resultado de lo que me diste fue "C: \ Archivos de programa \ Java \ jre7 \ bin \ javaw.exe" -jar "" "/ f en lugar de" C: \ Archivos de programa \ Java \ jre7 \ bin \ javaw.exe "-jar"% 1 "% * – Trey

+0

Acabo de editar para agregar una comilla final – Marc

+0

Bien. Puse la cita antes de la/f, por lo que ahora no me pregunta si deseo sobrescribir la clave de registro existente, pero la la salida sigue siendo relativamente igual. "C: \ Archivos de programa \ Java \ jre7 \ bin \ javaw.exe" -jar "" El "% 1" está girando solo en "" y no aparece el% *. – Trey

7

literales Porcentaje deben ser duplicados en un archivo por lotes: \"%%1\" %%*"

+0

¡MUCHAS GRACIAS! Funciona al 100% ahora. – Trey

+0

Good call, dbenha metro. Ejecutar desde la línea de comandos frente al archivo por lotes explica los problemas de porcentaje. – Marc

1

como una adición a dbenham 's respuesta, se debe utilizar ¡backslaches y citas para la ruta de ubicación!
(quiero decir, se debe utilizar en lugar de "\"C:\Program Files....."C:\Program Files.....)

por lo que esta es la respuesta final para el signo de porcentaje típico & añadiendo problema:

reg add "HKEY_LOCAL_MACHINE\Software\Classes\jarfile\shell\open\command" /v "" /t REG_EXPAND_SZ /d "\"C:\Program Files\Java\jre7\bin\javaw.exe\" -jar \"%%1\"" /f 

gracias dbenham!

1

Otra alternativa es el uso de comillas simples, algunas aplicaciones pueden leer correctamente, ejemplo:

reg add "HKEY_LOCAL_MACHINE\Software\Classes\jarfile\shell\open\command" /v "" /t REG_EXPAND_SZ /d "'C:\Program Files\Java\jre7\bin\javaw.exe\' -jar '%1' %*" /f 
Cuestiones relacionadas