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

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

Ответить
Настройки темы
CMD/BAT - Необходимо прочитать и сериализовать текстовый файл в переменную

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


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

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


Изменения
Автор: ateka
Дата: 17-06-2020
Здравствуйте, ищу помощи в с следующей задачей:
Есть текстовый файл с строками:
Код: Выделить весь код
зайка
котик
ослик

тигрёнок

бабочка
Пытаюсь преобразовать его в json и поместить в переменную.
Искомый результат:
Код: Выделить весь код
зайка\nкотик\nослик\n\nтигрёнок\n\nбабочка
То есть надо прочитать текстовик построчно и добавить в конец строки \n и результат дописать в конец самой переменной.
На данный момент есть следующий код
Код: Выделить весь код
SETLOCAL EnableDelayedExpansion
for /f "delims=" %%x in (commx.txt) do (
set _var=!_var!\n%%x
)
echo %_var%
Но он пропускает пустые строки а они важны.
И ещё вопрос. Мой файл на 65000 символов.
CMD такие переменные точно не поддерживает.
А новый Windows terminal потянет?
Спасибо.

Отправлено: 14:41, 17-06-2020

 

Ветеран


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

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


Цитата Fors1k:
Прекрасно все работает »
Что там работает? Пустое выражение -- нет вхождения, нет замены. Иначе вместо каждого перевода строки было бы два символа '\' и 'n' Пример замены:
Код: Выделить весь код
  > $a =
       : @"
       : a
       : a
       : a
       : "@

 > $a -replace "\n\r", "\n"
a                                
a                                
a                                
 > $a -replace "\n", "\n"  
a\na\na

Отправлено: 21:34, 17-06-2020 | #11



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

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


Аватара для Fors1k

Старожил


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

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


Цитата Foreigner:
Что там работает? »
Я еще раз предлагаю вам запустить мой код, а не свой. А уже после скажете, работает мой код, или нет.

Отправлено: 22:00, 17-06-2020 | #12


Ветеран


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

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


Цитата Fors1k:
Я еще раз предлагаю вам запустить мой код, а не свой. А уже после скажете, работает мой код, или нет. »
Почему тогда "`r`n" не меняются на строку "\" + "n"? Ведь так должно быть? Или как? Ну попробуйте в вашем примере другую замену, и вы увидите, как это работает. Замените любой другой символ на "\n".

Отправлено: 22:14, 17-06-2020 | #13


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


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

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


Дяденьки, пачиму не раскрывается переменная?
Код: Выделить весь код
$result=(Get-Content .\foo.txt -raw).Replace("`r`n",'\n')
Invoke-RestMethod `
	-Body '{"body": "$result"}'

Отправлено: 22:14, 17-06-2020 | #14


Ветеран


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

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


Цитата Fors1k:
Я еще раз предлагаю вам запустить мой код, а не свой. »
Сорри, что-то я тупанул, все нормально, строка меняется на строку, бывает. Извиняйте, ввели в заблуждение "`n`r" и "\n".

Отправлено: 22:26, 17-06-2020 | #15


Аватара для Fors1k

Старожил


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

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


Foreigner, ничего, бывает)
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:47, 17-06-2020 | #16


Ветеран


Contributor


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

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


Цитата ateka:
Мой файл на 65000 символов. »
В рамках чистого CMD Ваша задача решения не имеет -Ограничение командной строки .
Вот CMD-решение, но в указанных ограничениях.
Код: Выделить весь код
@Echo OFF
cls
 
Set "FileIn=Z:\Box_In\test.txt"

Set "Var="
FOR /F "usebackq tokens=1* delims=:" %%i IN (`FINDSTR /N /R /C:".*" "%FileIn%"`) DO Call Set "Var=%%Var%%%%j\n"

Echo "%Var%" 
Pause
Exit /B
В чём задача? Зачем такая переменная, что Вы с ней будете делать? Конечный результат - текстовый файл? И чтобы всё остальное - CMD? В такой постановке можно попробовать комбинацию CMD+PowerShell или
CMD+JS
Код: Выделить весь код
@set @E=1; /*

@Echo Off
cls
	Set "FileIn=Z:\Box_In\test.txt"
	Set "FileOut=Z:\Box_Out\testOut.txt"

	2>nul del "%FileOut%"
	Cscript //NoLogo /E:jscript "%~dpnx0" "%FileIn:\=\\%" "%FileOut:\=\\%"

	More "%FileOut%"
pause
GoTo :Eof

*/

var oArg = WScript.Arguments;
if (oArg.Count()<2) WScript.Quit(1);

var FileIn = oArg(0);
var FileOut = oArg(1);

var FSO = WScript.CreateObject('Scripting.FileSystemObject');

var F = FSO.OpenTextFile(FileIn, 1);
var s = F.ReadAll();
F.Close();

F = FSO.CreateTextFile(FileOut, true);
F.Write(s.replace(new RegExp(String.fromCharCode(13,10), 'g'),"\\n"));
F.Close();
С файлом в 1Мб расправляется мигом.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 18-06-2020 в 10:44.

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:19, 18-06-2020 | #17


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


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

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


Цитата megaloman:
delims=: »
Спасибо. Я не подумал поставить : делимом и как дурак отрезал от переменной.
Будет мне наука.
Цитата megaloman:
В чём задача? Зачем такая переменная? »
Мне надо взять данные из текстового файла и через API в виде json-a переслать на сайт.
В итоге я взял кусок кода у Форсика, засел за гугл и набросал рабочий код на PoSh.
Надеюсь никому его показывать не придётся.
Ещё раз спасибо!

Отправлено: 16:29, 18-06-2020 | #18



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Необходимо подгрузить в бат скрипт переменную vlad_exe@vk Скриптовые языки администрирования Windows 8 29-10-2012 00:26
VBS/WSH/JS - Экспорт значений реестра в общий текстовый файл + добавление доп данных в этот файл fedko Скриптовые языки администрирования Windows 0 17-06-2010 11:52
[решено] как прочитать весь текстовый файл целиком? (в PHP) Vlad Drakula Вебмастеру 2 24-06-2006 13:51
Как прочитать на JavaScript текстовый файл? Efremov Вебмастеру 5 11-01-2006 11:27
помогите прочитать файл evsino Хочу все знать 2 27-01-2005 13:26




 
Переход