Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Чтение содержимого текстового файла в переменную

Ответить
Настройки темы
CMD/BAT - [решено] Чтение содержимого текстового файла в переменную

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


В батнике нужно прочитать небольшой текстовый файл в строковую переменную полностью.

Командой

set /p comment=< comment.txt

переменной comment присваиваются только первые 1036 символов файла.

Есть ли возможность прочитать весь файл в переменную?

В файле несколько тысяч символов. Спецсимволы (и кавычки) заскринены как надо, концы строк убраны. В файле по сути одна длинная строка.
Ручное присвоение содержимого текстового файла непосредственно в батнике командой set "comment=бла-бла-бла, содержимое файла до конца" переменную меняет.
Хочется же автоматической подстановки из файла.

Тестировалось на разных русских и английских текстах - результат один и тот же: только 1036 символов.
Система XPsp3 32bit. Формат пакетного файла cmd (да и с bat - только первые 1036 символов).
По линку http://support.microsoft.com/kb/830473/en-us говорят о 8191 символе для командной строки и переменных окружения для XP.
Мои системные переменные окружения занимают 1248 байт, то есть должно оставаться ещё 6-7 тысяч байт.

Отправлено: 18:28, 10-03-2011

 

Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Цитата kosmopes:
В файле по сути одна длинная строка. »
Попробуйте так:
Код: Выделить весь код
@Echo Off
:: Файл с текстом
Set file=e:\Temp\list 1.txt

For /F "usebackq tokens=* delims=" %%i In ("%file%") Do Set var=%%i

:: Запись переменной в файл для проверки
Echo %var%>test.txt
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:10, 10-03-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


gora, да, спасибо - до этого вчера и доискался.

Теперь борюсь за чтение в переменную нескольких строк из файла. Если текст в файле разбить на строки, вашей конструкцией считывается только последняя строка (или абзац одной строкой). Читал что-то про отложенное раскрытие переменных в цикле FOR http://www.robvanderwoude.com/variableexpansion.php

Универсально сработала конструкция

@setlocal ENABLEDELAYEDEXPANSION
@FOR /F "tokens=*" %%i IN (comment.txt) do @IF NOT X%%i==X set comment=!comment!%%i
...
@endlocal


- читает из файла всё, игнорирует в файле пустые строки и абзацы - просто склеивает текст в одну строку.
Написал IF NOT X%%i==X потому что не знаю, как проверить %%i на пустое значение по-другому - побоялся, что оно может быть либо пустым, либо "" - и вдруг это будут разные значения.
При таком коде надо учесть, что строки склеиваются непосредственно - без разделителя (пробела, например) между склейками.

В идеале, хорошо бы прочитать в одну переменную текст как есть - с разбиением на строки и абзацы (принципиально в батниках возможно использование таких переменных - разбитых на строки и абзацы?), а потом обработать в переменной возможное вхождение спецсимволов (", <, & и т.п.) - потому как эта переменная будет использоваться как параметр (тег комментария) в кодировщике lame, и необработанный текст может сбить команду кодировки.

Отправлено: 12:58, 11-03-2011 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Чтение содержимого текстового файла в переменную

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Чтение строки из файла в переменную Николя Скриптовые языки администрирования Windows 42 17-01-2010 19:42
[решено] Чтение текстового файла с неизвестным именем ZeroCrash AutoIt 4 01-07-2009 19:03
CMD/BAT - [решено] Как скопировать имя файла из текстового файла в код батника и т.д. Nun-Nun Скриптовые языки администрирования Windows 6 13-05-2009 13:28
MSFT SQL Server - ошибка типа данных (tinyint и text) при записи содержимого поля в переменную Vi-P Программирование и базы данных 14 11-12-2008 01:14
Shell. Чтение текстового файла по строкам. Delphin911 Общий по Linux 11 07-04-2005 17:58




 
Переход