2015-06-24 16 views
6

Ho un comando chiamato compare che restituisce un numero. Voglio stampare alcuni spazi e quindi "testo", quindi il numero in un file. risultato atteso è del tipo:Batch: impossibile stampare spazi iniziali di una stringa

text1 

mie stampe codice text1 senza spazi

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

ho cercato di stampare un carattere di tabulazione echo <TAB> >> "%resultFile%" ma mi ha dato un errore ">> è stato inaspettato in questo momento." Cosa dovrei fare? Grazie in anticipo!

risposta

1

Questo funziona bene:

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

E per quanto riguarda aggiungendo l'output del comando nel batch per sé?

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% 

Vedere https://stackoverflow.com/a/2340018/711006. Preferirei l'opzione for ma non funziona per l'output degli errori.

EDIT

L'OP suggerito modificare l'ultima riga a questo: sono necessari

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

I ! 's invece di %' s quando i comandi vengono espanse insieme, per esempio come parte di un blocco if o for. Tuttavia, uno deve emettere il comando setlocal EnableDelayedExpansion prima e non abbiamo menzionato questo in questa domanda.

E mi sento di raccomandare ulteriori letture su scambiando il reindirizzamento di comando e di uscita: Problems with an extra space when redirecting variables into a text file

+0

@ozcanovunc Si prega di incollare i suggerimenti sul codice si trasforma in commenti prossima volta, in modo che possiamo discutere il cambiamento insieme e tutti possono seguire i nostri pensieri. – Melebius

Problemi correlati