2009-05-25 3 views
0

Die Sache ist, dass ich einen Parameter mit Fragezeichen in eine .bat Batch-Datei übergeben muss. Wenn ich das Fragezeichen benutze, wird der Parameter nicht gut übergeben. Wie kann ich das lösen?Fragezeichen in .bat Batch-Skripten ignorieren

Ich habe Probleme mit dieser Zeile:

script.bat /n"output.owl" /r"http://www.address.com/blog/?feed=rss2" 

= Symbol auch ein Problem sein könnte.

+0

Worauf genau beziehen Sie sich? Mit dem einfachen Batch "echo% 1% 2% 3" hatte ich keine Probleme mit der Kommandozeile "test.cmd abc?? Def e? Fg". Alle Parameter wurden korrekt übergeben und gedruckt, daher verstehe ich Ihr Problem hier nicht. – Joey

+1

Scheint immer noch ohne Probleme zu funktionieren? Was versucht Ihr Batch? Können Sie den Code teilen? Vielleicht liegt das Problem anderswo als bei der Parameteranalyse. – Joey

Antwort

0

Sie könnten immer nur für die? innerhalb Ihrer Batch-Datei und zeigen Sie eine entsprechende Nachricht an den Benutzer.

This is a question das wird Ihnen helfen, die bereits gefragt wurde.

2

Ich vermute, das Problem hier ist die ursprüngliche Batch-Datei verwendet eine for-Schleife zu Verarbeitung der Befehlszeilenoptionen, und das Fragezeichen wird für Dateiname Wildcard-Erweiterung verwendet.

> type fortest.bat 
@echo off 
for %%a in (%*) do (
    echo arg is %%a 
) 
> fortest a b c/?d 
arg is a 
arg is b 

Verwenden von Positionsparametern% 1 und% 2 vermeidet die Wildcard Expansion erfolgt in der für ... (% *) Schleife. Der Schichtbetreiber vermeidet auch die Wildcard-Erweiterung , wenn eine unbekannte Anzahl von Parametern verarbeitet werden muss.

> type shifttest.bat 
@echo off 
:loop 
    if "x%1" == "x" goto :eof 
    echo arg is %1 
    shift /1 
    goto :loop 
> shifttest a b c/?d 
arg is a 
arg is b 
arg is c/?d