2017-01-24 2 views
1

Wie kann ich die folgenden Zeichen in Windows Cmd entkommen?Escape-JVM-Parameter in Windows Cmd

-Djava.util.logging.SimpleFormatter.format="[%1$tc] %4$s: %5$s %6$s%n" 

Ich versuchte

-Djava.util.logging.SimpleFormatter.format="[\%1\$tc] \%4\$s: \%5\$s \%6\$s\%n" 

Doch diese in einem Java-Anwendungsfehler zur Folge hat.

Antwort

1

von der Kommandozeile Sie keine Probleme mit dem angegebenen Befehl haben sollte, aber im Inneren Batch-Dateien benötigen Sie die Prozentzeichen

... .format="[%%1$tc] %%4$s: %%5$s %%6$s%%n" 

Notiz zu entkommen (sie Verdoppelung): Wenn ich sage, man sollte nicht habe irgendein Problem in der Befehlszeile, ich meine nicht, dass du keine Probleme haben kannst, solltest du nicht.

In Stapeldateien ersetzt der Parser jede Variablenreferenz. Wenn die Variable nicht existiert, wird sie einfach entfernt. So, wie %1 zu %9 Batch-Datei Argumente sind, wird der Code analysiert als

format="[%1$tc] %4$s: %5$s %6$s%n" 
     ^^............................ first argument to batch file 
       ^^..................... fourth argument to batch file 
         ^^............... fifth argument to batch file 
          ^^.......... sixth argument to batch file 
           ^....... unpaired % - removed 

Wenn Sie keine Argumente übergeben, um die Batch-Datei, dies zu

umgewandelt wird
format="[$tc] $s: $s $sn" 

In Befehlszeile dieses Verhalten ist anders, wenn die Variable nicht existiert, lässt der Parser die Variable einfach wie im Befehl. In Ihrem Fall wird der Parser versuchen, es so

format="[%1$tc] %4$s: %5$s %6$s%n" 
     ^......^ ...................... variable "1$tc] " 
         ^....^ ........... variable "5$s " 
           ^........ unpaired - leave 

Also, zu lösen, wenn Sie so etwas wie haben

set "1$tc] =data" 

Sie sollten keine Probleme

1

Bitte versuchen Sie haben diese

Character to be escaped  Escape Sequence Remark 
%        %%  May not always be required in doublequoted strings, just try 
[        \[ 
]        \] 

Vollständige Zeichen finden here