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

Компьютерный форум 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

 

Аватара для Fors1k

Старожил


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

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


Код: Выделить весь код
param(
    $path="C:\qwe.txt"
)cls

$result=(gc $path -raw).Replace("`r`n",'\n')
$result

Последний раз редактировалось Fors1k, 17-06-2020 в 18:30.

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

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



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

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


Ветеран


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

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


Fors1k, а зачем ты пишешь cls после блока param? Не могу этого понять, зачем?

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


Аватара для Fors1k

Старожил


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

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



до2020-06-17_18-30-06.png
после:2020-06-17_18-28-39.png
cls обеспечивает чистоту и свежий запах в консоли после выполнения кода
Это сообщение посчитали полезным следующие участники:

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


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


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

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


Цитата Fors1k:
$result »
С пошиком проблема в том что МС накрутила ограничений на скрипты очень много.
Пока запустишь - уже не надо.
А так конечно спасибо. У меня локально работает.
Правда на большом файле (65к) ещё не проверял.

Корявое решение на cmd
Код: Выделить весь код
SetLocal EnableDelayedExpansion
for /f "delims=" %%I in ('findstr /n "^" "foo.txt"') do (
set _TempVar_01=%%I
set _TempVar_02=!_TempVar_01:~2!\n
set _ResultVar_01=!_ResultVar_01!!_TempVar_02!
)
echo !_ResultVar_01!

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


Ветеран


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

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


Цитата Fors1k:
cls обеспечивает чистоту и свежий запах в консоли после выполнения кода »
Понятно, просто для читаемости.

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


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


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

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


С CMD у меня не получается.
Кто-то знает что именно надо дописать что бы ПоШ из батника заработал?
Команда
Код: Выделить весь код
powershell (gc .\foo.txt -raw).Replace("`r`n",'\n')
Ругается:
Код: Выделить весь код
At line:1 char:29
+ (gc .\foo.txt -raw).Replace(`r`n,'\n')
+                             ~
Missing ')' in method call.
At line:1 char:29
+ (gc .\foo.txt -raw).Replace(`r`n,'\n')
+                             ~~~~
Unexpected token '`r`n' in expression or statement.
At line:1 char:33
+ (gc .\foo.txt -raw).Replace(`r`n,'\n')
+                                 ~
Missing argument in parameter list.
At line:1 char:38
+ (gc .\foo.txt -raw).Replace(`r`n,'\n')
+                                      ~
Unexpected token ')' in expression or statement.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : MissingEndParenthesisInMethodCall

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


Ветеран


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

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


ateka, ему не надо «работать из батника».

Отправлено: 20:31, 17-06-2020 | #8


Ветеран


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

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


Цитата ateka:
Replace("`r`n",'\n') »
Это так не работает. В строке нет последвательности символов "`r`n"

Не путайте Replace-метод и replace-оператор, первый меняет строку на строку, а второй ищет regex-паттерн и меняет на строку:
Код: Выделить весь код
PS > 'aaa'.Replace('a','b')
bbb
PS > 'aaa' -replace 'a{2}','b'
ba
Аналогично со split.

Последний раз редактировалось Foreigner, 17-06-2020 в 21:07.


Отправлено: 20:51, 17-06-2020 | #9


Аватара для Fors1k

Старожил


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

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


Цитата ateka:
С CMD у меня не получается. »
Microsoft считает использование cmd - атавизмом.

Разработка cmd.exe была фактически остановлена после выхода Windows 2000.В качестве основной командной оболочки рассматривается PowerShell.

PowerShell заменяет командную строку(за ссылку спасибо YuS_2)

Цитата Foreigner:
Это так не работает. В строке нет последвательности символов "`r`n" »
Прекрасно все работает, и последовательность символов "`r`n" очень даже есть. Вы код пробовали запустить?)
А у ateka код не запустился потому, что потерял кавычки.

Цитата ateka:
С пошиком проблема в том что МС накрутила ограничений на скрипты очень много. »
Цитата ateka:
что бы ПоШ из батника заработал? »
Вбейте в яндекс "как запускать ps скрипты", и в первой-второй ссылке будет нужная информация. У меня проблем нет никаких

Последний раз редактировалось Fors1k, 17-06-2020 в 21:29.

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

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



Компьютерный форум 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




 
Переход