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
Se ho compreso correttamente il problema, è stato scritto lo spazio finale.
Invece di
echo string > file
uso
echo string>file
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
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? –
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.
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. –
Ho anche avuto problemi con gli spazi iniziali, quindi ho usato l'escape caret (^): echo^string1, nel formato sopra. Ha funzionato a meraviglia. – will
'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
Ha! Questo è esattamente! Non avevo capito che l'eco avrebbe emesso la stringa esatta dopo di essa. Grazie! – Rayne
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
@Synetech '(echo 1 2 3)> file' – bers