Сохранить вывод файла в переменную - PullRequest
1 голос
/ 03 января 2011

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

Я использую Windows 2003 Server.

Текстовые файлы имеют несколькотакие строки:

10.20.210.100 fish
10.20.210.101 rock

Я использовал:

Set /P var=<file.txt

Читает только первую строку файла.

Я пробовал также с циклом FOR, но он назначил переменной только последнюю строку.

Ответы [ 2 ]

2 голосов
/ 03 января 2011

Нет простого способа получить полное содержимое файла в одну переменную. Переменная имеет ограничение ~ 8100 длины. И сложно перевести CR / LF в переменную

Но с помощью цикла FOR вы можете получить каждую строку.

Попробуйте взглянуть на пакетный скрипт для чтения строка за строкой

EDIT: Чтобы получить каждую строку в одной переменной, вы можете использовать это

@echo off
SETLOCAL EnableDelayedExpansion
set n=0
for /f "delims=" %%a IN (example.txt) do (
  set /a n+=1
  set "line[!n!]=%%a"
  echo line[!n!] is '%%a'
)
set line

или получить все в одной переменной (без CR / LF)

@echo off
SETLOCAL EnableDelayedExpansion
set "line="
for /f "delims=" %%a IN (example.txt) do (
  set "line=!line! %%a"
)
echo !line!
0 голосов
/ 04 января 2011

Сценарий Джеба работает отлично, но если вы выводите% line%, он содержит каждую строку, а не строку во временах файла.И если вы используете echo! Line!, он содержит одну строку!также с другой линией.Я сделал небольшую модификацию скрипта и теперь получаю ожидаемый результат.

@echo off
SETLOCAL EnableDelayedExpansion
set "line="
for /f "delims=" %%a IN (example.txt) do (
set "line1=%%a"
set "line=!line1! and  %%a"
)
echo !line!

или

echo %line%

Теперь вы получите тот же результат в случае бота.

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