CMD/BAT - [решено] Как записать в txt файл большой кусок текста с помощью bat

Аватара пользователя
Андрей_Угаров@vk

CMD/BAT - [решено] Как записать в txt файл большой кусок текста с помощью bat

Сообщение Андрей_Угаров@vk »

Как создать txt файл с большим количеством текста с помощью bat?

Этот текст должен быть с самом batнике
Аватара пользователя
Андрей_Угаров@vk

Re: CMD/BAT - [решено] Как записать в txt файл большой кусок текста с помощью bat

Сообщение Андрей_Угаров@vk »

вам все еще нужно решение ?



выдачу произвольного текста заключенного в теле бат файла в выполнением того что было до и того что после этого текста ?









Код:

Код: Выделить всё

cat_embedded_text.cmd



Код:

Код: Выделить всё

CMD doing some stuff
If you want
If you want to
If you want to know
If you want to know PowerShell ?
That is all !@#$%^^&*()_ you want to know ...
CMD doing other stuff
CMD doing some other stuff



пример привести не жалко но боюсь флейма :-)



пример печатающего тела





Код:

Код: Выделить всё

@echo OFF
echo CMD doing some stuff
powershell.exe "&{ $p = $false; (get-content -path $args[0])| foreach-object {if ($_ -match '^REM D4D5BBCD' ){ $p = $false } if ($p) { $_ } ; if ($_ -match '^REM FAE04EC0'){ $p = $true } } }" %~dpnx0
echo CMD doing other stuff
call :AFTER
goto :EOF
REM FAE04EC0
If you want
If you want to
If you want to know
If you want to know PowerShell ?
That is all !@#$%^^&*()_ you want to know ...
REM D4D5BBCD
:AFTER
echo doing some other stuff
goto :EOF
Аватара пользователя
gora

Re: CMD/BAT - [решено] Как записать в txt файл большой кусок текста с помощью bat

Сообщение gora »

Код:

Код: Выделить всё

@Echo Off
Set txtfile=e:\Temp\bigtxt.txt
(Echo Создаем большой текст
Echo Весь текст в батнике
Echo Здесь очень много строк
Echo Но спец. символов здесь нет
Echo Иначе их придется экранировать
Echo А это сложно... :^)
Echo Три пустые строки
Echo.
Echo.
Echo.
Echo Последняя строка
)>"%txtfile%"
Аватара пользователя
Андрей_Угаров@vk

Re: CMD/BAT - [решено] Как записать в txt файл большой кусок текста с помощью bat

Сообщение Андрей_Угаров@vk »

Или так:



Код:

Код: Выделить всё

@echo off
setlocal enableextensions enabledelayedexpansion
set sFile=BigText.txt
more +10 "%~0">"%sFile%"
endlocal
exit /b 0
Создаем большой текст
Весь текст в батнике
Здесь очень много строк
Так можно и спецсимволы :^)
`~!@#$%^&*()_+|\/.,;:'"
Три пустые строки
Последняя строка
Аватара пользователя
mactepcepbep@vk

Re: CMD/BAT - [решено] Как записать в txt файл большой кусок текста с помощью bat

Сообщение mactepcepbep@vk »

подскажите, последний скрипт идеально работает в локальной папке, но я никак не могу заставить его писать в файлы в директории выше, все значки cd ../ работают а вот set sFile ../12345/123.txt уже не работает. мне нужен только относительный путь касательно запускаемого бантика. заранее спасибо.
Аватара пользователя
mactepcepbep@vk

Re: CMD/BAT - [решено] Как записать в txt файл большой кусок текста с помощью bat

Сообщение mactepcepbep@vk »

mactepcepbep@vk,



Тебе не надо "cd ..\"



Код:

Код: Выделить всё

set "sFile=%~dp0..\12345\123.txt"
Аватара пользователя
mactepcepbep@vk

Re: CMD/BAT - [решено] Как записать в txt файл большой кусок текста с помощью bat

Сообщение mactepcepbep@vk »

Цитата Iska:





Код:

Код: Выделить всё

@echo off
setlocal enableextensions enabledelayedexpansion
set sFile=BigText.txt
more +10 "%~0">"%sFile%"
endlocal
exit /b 0
Создаем большой текст
Весь текст в батнике
Здесь очень много строк
Так можно и спецсимволы :^)
`~!@#$%^&*()_+|\/.,;:'"
Три пустые строки
Последняя строка

CMD/BAT - [решено] Как записать в txt файл большой кусок текста с помощью bat




Возможно ли сделать так, чтобы после этого кода можно было написать другой еще? Просто есть код, который обязательно должен быть в конце.

После more можно ли указать точное количество строк, которое надо скопировать? или такого функционала нет?
Аватара пользователя
mactepcepbep@vk

Re: CMD/BAT - [решено] Как записать в txt файл большой кусок текста с помощью bat

Сообщение mactepcepbep@vk »

Цитата V!RTuE:



такого функционала нет
CMD/BAT - [решено] Как записать в txt файл большой кусок текста с помощью bat




Можно написать с заменой More на вывод Echo в цикле, тогда возможны проблемы со спецсимволами. У Вас что в тексте?
Цитата V!RTuE:



Просто есть код, который обязательно должен быть в конце.
CMD/BAT - [решено] Как записать в txt файл большой кусок текста с помощью bat




Почему, что, его нельзя оформить процедурой и вставить перед выводимым текстом? Как пример:

Код:

Код: Выделить всё

@Echo Off
cls
	Set "FileOut=Z:\Box_In\BigText.txt"
	Set /A N=10000000
	FOR /F "usebackq tokens=1 delims=[]" %%i In (`Find /N ":My_Out_Text" "%~dpnx0"`) DO Set /A N=%%i
	>"%FileOut%" more +%N% "%~dpnx0"
Echo 1. Тут можно продолжать писать код
	Call :MyCode
Echo 2. Тут можно продолжать писать код
pause
Exit /b 0
:MyCode
	Echo  Просто есть код, который НЕ обязательно должен быть в конце.
Exit /B
:My_Out_Text
Создаем большой текст
Весь текст в батнике
Здесь очень много строк
Так можно и спецсимволы :^)
`~!@#$%^&*()_+|\/.,;:'"
Три пустые строки
Последняя строка
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] Как записать в txt файл большой кусок текста с помощью bat

Сообщение megaloman »

Цитата megaloman:



Можно написать с заменой More на вывод Echo в цикле, тогда возможны проблемы со спецсимволами. У Вас что в тексте?
CMD/BAT - [решено] Как записать в txt файл большой кусок текста с помощью bat




Спецсимволов полно. Текст более 200 строк. Содержимое файла openssl-1.0.0.cnf (программы OpenVPN)


Цитата megaloman:



Почему, что, его нельзя оформить процедурой и вставить перед выводимым текстом?
CMD/BAT - [решено] Как записать в txt файл большой кусок текста с помощью bat




Нельзя, так как используется
CMD/BAT - [решено] Как пользоваться ключем /A команды Findstr
. Там обязательное условие, что он должен быть в конце.

В принципе уже задачу решил, но не копируются пустые строки (в данном случае абсолютно не критично), но для красоты хотелось бы. Да и просто на будущее знать как можно реализовать подобную задачу.

Вот рабочий код. Реализовано через поиск начальной и конечной строки



Код:

Код: Выделить всё

...
:Createopensslcnf
:: Обязательно должно быть в начале батника или здесь @echo off, иначе некорректно экспортируется текст
:: Допустимо в начале указать @echo on, а в этой части @echo off
@echo off
    Set "FileIn=%~0"
    Set "Key1=# For use with easy-rsa version 2.0 and OpenSSL 1.0.0*"
    Set "Key2=init = 0"
    FOR /F "usebackq skip=2 tokens=1 delims=[]" %%i In (`Find /N /I "%Key1%" "%FileIn%"`) DO Set /A N=%%i-1
    >"%KEY_CONFIG%" (FOR /F "usebackq delims=" %%i In (`More +%N% "%FileIn%"`) DO (
        Echo %%i|Find /I /V "%Key2%"||(<nul Set /P Str=%%i&Exit /B 0)
    ))
GoTo :EOF
# For use with easy-rsa version 2.0 and OpenSSL 1.0.0*
...
...
init = 0
:: ----------------------------------------
...

P.S.: это часть моего проекта по автоматизации работы с OpenVPN на Windows. Подобных решений нигде не встречал еще



Скрытый текст

[spoiler]Изображение[/spoiler]
Ответить

Вернуться в «Скриптовые языки администрирования Windows»