2013-01-16 7 views
21

Ich schreibe eine Batch-Datei, wo ich eine Zeichenfolge ausgeben soll, die '!' zu einer anderen Datei. Wenn ich diese Zeichenfolge jedoch in einer anderen Datei abbilde, wird "!" von der Ausgabe.Unterschied zwischen% Variable% und! Variable! in Batch-Datei

Eg: Input:

set LINE=Hi this is! output 
echo !LINE!>>new_file.txt 

Output in new_file.txt ist:

Hi this is output 

Auch wenn Eingangs

set LINE=Hello!! this is output!! 
echo !LINE!>>new_file.txt 

Output in new_file.txt ist:

Hello 

Daher überspringt es! (Ausrufezeichen) von der Ausgabe in die neue_Datei. Wenn ich% LINE% verwende, wird einfach "echo is on" in der Ausgabedatei angezeigt.

Bitte schlagen Sie einen Weg vor, um dieses Problem zu lösen.

+1

Wenn 'echo% LINE%' 'Ausgänge echo werden kann on' gefunden erklärt ist dann müssen Sie in einem Block sein. Sie sollten ein bisschen mehr von Ihrem Code hinzufügen – jeb

+1

Die Frage ist sehr irreführend, Sie wollen nicht den Unterschied wissen, wollen Sie wissen, wie man es zu entkommen ... –

Antwort

15

Wenn Sie die verzögerte Erweiterung aktiviert haben und ein Ausrufezeichen ausgeben möchten, müssen Sie es entfernen.

Das Escapen von Ausrufezeichen benötigt keine, ein oder zwei Carets, abhängig von der Platzierung.

@echo off 
set test1=Test1! 
setlocal EnableDelayedExpansion 
set test2=Test2^^! 
set "test3=Test3^!" 

echo !test1! 
echo !test2! 
echo !test3! 

Der Unterschied zwischen !var!%var% und in Blöcken an DOS batch: Why are my set commands resulting in nothing getting stored?

Eine Erläuterung des Batch-Parser bei How does the Windows Command Interpreter (CMD.EXE) parse scripts?

4

Es scheint, Sie haben SETLOCAL EnableDelayedExpansion irgendwo höher im Code aufgerufen. Schauen Sie sich here an, um zu sehen, welche Auswirkungen das hat.

+0

Vielen Dank für die Antwort. Ja, ich benutze dies Eigenschaft in meiner Datei, da dieser Code in einer for-Schleife ist und ich auch einige Operatoren find/replace für diese Zeichenfolge verwende, also muss ich sie benutzen. – Vishal

+0

@User der Link, den ich gesendet habe gab Ihnen gute Erklärung für die Nebenwirkungen davon. Ich hoffe, es wird dir helfen, das Verhalten, das du beobachtest, zu verstehen. –

Verwandte Themen