2012-09-20 13 views
7

Ho notato che quando uso echo per stampare qualcosa in un file in DOS, uno spazio viene aggiunto alla stringa. Ho bisogno di stampare la stringa senza lo spazio finale. C'è un modo per farlo, o come soluzione alternativa, rimuovere gli spazi finali dal file?Uso di echo senza spazio finale in DOS

risposta

19

Se ho compreso correttamente il problema, è stato scritto lo spazio finale.

Invece di

echo string > file 

uso

echo string>file 
+0

Ha! Questo è esattamente! Non avevo capito che l'eco avrebbe emesso la stringa esatta dopo di essa. Grazie! – Rayne

+2

Questo sembra buono, ma non funzionerà. Prova questo: 'echo 1 2 3> file'. Se la stringa si conclude con un numero, il reindirizzamento lo tratterà come un canale pipe. Puoi metterlo tra virgolette, ma potresti non volerlo tra virgolette. – Synetech

+2

@Synetech '(echo 1 2 3)> file' – bers

0

Un rapido ricerca mi ha portato this link

sembra si dispone di più opzioni. Se si vuole analizzare il file post-eco utilizzando uno script, si potrebbe prendere in considerazione questa VBScript

Do While Not WScript.StdIn.AtEndOfStream 
    WScript.Echo RTrim(WScript.StdIn.ReadLine) 
    Loop 

che loop, riga per riga attraverso un file (di solito .txt), ed esegue RTrim, che le strisce spazi finali.

Acclamazioni

+0

Lo stesso può essere realizzato tramite batch con un token' for/f "= * delim =" %% x in (file.txt) echo% x> file2.txt '. Ma allora perché non farlo nel tuo file originale? –

10

Supponendo che si sta parlando di cmd.exe piuttosto che il vero e proprio (piuttosto obsoleto) MSDOS, ci sono una serie di modi per fare questo, la prima è:

echo Here is some text>output.txt 

ma Lo trovo un po 'meno leggibile dal momento che sono abituato a essere in grado di delineare chiaramente' argomenti 'sulla riga di comando.

In alternativa, non c'è nulla ti impedisce di scambiare intorno alla fine della riga di comando:

>output.txt echo Here is some text 

che vi permetterà di separare ancora gli argomenti pur non avendo spazi estranei messo nel file di output.

In realtà, ho spesso usato questo metodo per i blocchi di codice così:

>output.txt (
    echo hello 
    echo goodbye 
) 

che scriverà entrambe righe al file. In questo caso, lo trovo preferibile dal momento che all'inizio sai dove sta andando l'uscita, piuttosto che dover andare a vedere la fine del blocco di codice.

+0

Ho scoperto che quando si fa eco da un blocco di codice a volte si perde il ritorno a capo e si stampa su una singola riga. –

+0

Ho anche avuto problemi con gli spazi iniziali, quindi ho usato l'escape caret (^): echo^string1, nel formato sopra. Ha funzionato a meraviglia. – will

+0

'echo Here is some text> output.txt ma trovo che in qualche modo meno leggibile visto che sono abituato a essere in grado di delineare chiaramente "argomenti" sulla riga di comando. Ancora più importante, se il testo termina con un numero, sarà trattato come canale di condutture. La seconda sembra funzionare bene (non ricordo di aver visto quella forma prima). Grazie. – Synetech

Problemi correlati