2013-02-12 2 views
6

У меня есть текстовый файл, a.txt:чтение текстовых файлов в пакетном сценарии

Hello World
Добрый день

Я написал пакетный скрипт для чтения содержимое этого файла в строке по линии:
FOR /F "tokens=* delims=" %%x in (a.txt) DO echo %%x

Я получаю выход как "Hello" "World" из-за поведение разделителя (пробел) по умолчанию. Как я могу изменить это поведение, чтобы получить ouptut в "Hello World" "Good Afternoon"

+3

Ваш код решает проблему, вы должны ее снова проверить – jeb

+0

Ты сценарий для меня. – aphoria

+0

Нет. Не дает желаемого результата. Это линия разрыва с символом пробега – Tjs

ответ

6

Ваш код «для/ф„токенов = * delims =“%% х в (a.txt) делать эхо %% х» будет работать на большинстве ОС Windows Операционные системы, если вы не изменили команды.

Таким образом, вы можете вместо этого «cd» в каталог, который нужно прочитать, перед выполнением команды «for/f» для выполнения строки. Например, если файл «a.txt» находится в папке C: \ documents и settings \% USERNAME% \ desktop \ a.txt, вы должны использовать следующее.

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

Но так как это не работает на вашем компьютере по причине, существует более простой и эффективный способ сделать это. Использование команды «type».

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

Или, если вы хотите, чтобы они выбрали файл, из которого можно было написать в пакете, вы могли бы сделать следующее.

@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 
Смежные вопросы