2015-06-24 1 views
6

Ich habe einen Befehl namens compare, der eine Zahl zurückgibt. Ich möchte einige Leerzeichen ausdrucken und dann die Nummer in eine Datei "schreiben". Erwartete Ausgabe ist wie:Batch - Drucken von Leerzeichen Anfang einer Zeichenfolge

text1 

Mein Code druckt text1 ohne Leerzeichen

set "output=  text" 
<nul set /p "=!output!" >> "%resultFile%" 
compare -metric NCC "a.jpg" "b.jpg" "c.jpg" 2>> "%resultFile%" 

Ich habe versucht, ein Tabulatorzeichen echo <TAB> >> "%resultFile%" zu drucken, aber es gab mir einen Fehler „>> war zu diesem Zeitpunkt unerwartet.“ Was soll ich machen? Danke im Voraus!

Antwort

1

Das funktioniert gut:

set "output=  text" 
>> "%resultFile%" echo %output% 

Und was sich die Befehlsausgabe in der Batch-anhängt?

set "output=  text" 
call compare -metric NCC "a.jpg" "b.jpg" "c.jpg" 2> temp.txt 
set /p number=<temp.txt 
del temp.txt 
>> "%resultFile%" echo %output%%number% 

Siehe https://stackoverflow.com/a/2340018/711006. Ich würde die Option for bevorzugen, aber es funktioniert nicht für die Fehlerausgabe.

EDIT

Die OP Bearbeiten der letzten Zeile dazu vorgeschlagen:

echo !output!!number! >> "%resultFile%" 

Die ! 's anstelle von %' s werden benötigt, wenn die Befehle zusammen expandiert werden, beispielsweise als ein Teil eines if oder for Blocks. Allerdings muss man zuvor den Befehl setlocal EnableDelayedExpansion ausgeben und wir haben dies in dieser Frage nicht erwähnt.

Und ich würde empfehlen, weiter zu lesen über den Befehl und die Umleitung der Ausgabe Swapping: Problems with an extra space when redirecting variables into a text file

+0

@ozcanovunc Bitte Vorschläge einfügen auf Code in Kommentaren beim nächsten Mal ändert, so können wir die Änderung gemeinsam diskutieren und jeder kann unsere Gedanken folgen. – Melebius