2013-02-12 8 views
6

Ho un file di testo, a.txt:lettura del testo in script batch

Ciao Mondo
Buon pomeriggio

ho scritto uno script batch per leggere il contenuto di questa linea di file per riga:
FOR /F "tokens=* delims=" %%x in (a.txt) DO echo %%x

sto ottenendo uscita come "Hello" "World" a causa del comportamento di default di delimitatore (spazio). Come posso ignorare questo comportamento per ottenere l'ouptut come "Hello World" "Good Afternoon"

+3

Il codice risolve il problema, è necessario testarlo di nuovo – jeb

+0

La sceneggiatura funziona per me. – aphoria

+0

No. Non fornisce l'output desiderato. È una linea di rottura con il carattere di spazio – Tjs

risposta

6

tuo codice "per/f "tokens = * delims =" %% x in (a.txt) do echo %% x" funzionerà sulla maggior parte di Windows Sistemi operativi a meno che non siano stati modificati i comandi.

Quindi è possibile "cd" nella directory da cui leggere prima di eseguire il comando "for/f" per seguire la stringa. Ad esempio, se il file "a.txt" si trova in C: \ documenti e impostazioni \% USERNAME% \ desktop \ a.txt, devi utilizzare quanto segue.

cd "C:\documents and settings\%USERNAME%\desktop" 
for /f "tokens=* delims=" %%x in (a.txt) do echo %%x 
echo. 
echo. 
echo. 
pause >nul 
exit 

Ma dal momento che questo non funziona sul computer per x motivo, esiste un modo più semplice ed efficiente per farlo. Utilizzando il comando "tipo".

@echo off 
color a 
cls 
cd "C:\documents and settings\%USERNAME%\desktop" 
type a.txt 
echo. 
echo. 
pause >nul 
exit 

Oppure, se si desidera che selezionino il file da cui scrivere nel batch, è possibile effettuare le seguenti operazioni.

@echo off 
:A 
color a 
cls 
echo Choose the file that you want to read. 
echo. 
echo. 
tree 
echo. 
echo. 
echo. 
set file= 
set /p file=File: 
cls 
echo Reading from %file% 
echo. 
type %file% 
echo. 
echo. 
echo. 
set re= 
set /p re=Y/N?: 
if %re%==Y goto :A 
if %re%==y goto :A 
exit 
Problemi correlati