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

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

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

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


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

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


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

Отправлено: 13:59, 21-12-2012

 

Аватара для gora

Ушёл из жизни


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

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


Код: Выделить весь код
@Echo Off
Set txtfile=e:\Temp\bigtxt.txt

(Echo Создаем большой текст
Echo Весь текст в батнике
Echo Здесь очень много строк
Echo Но спец. символов здесь нет
Echo Иначе их придется экранировать
Echo А это сложно... :^)
Echo Три пустые строки
Echo.
Echo.
Echo.
Echo Последняя строка
)>"%txtfile%"
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:17, 21-12-2012 | #2



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

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


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


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

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


Супер! Спасибо!)

Отправлено: 14:23, 21-12-2012 | #3


Ветеран


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

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


Или так:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sFile=BigText.txt
more +10 "%~0">"%sFile%"

endlocal
exit /b 0


Создаем большой текст
Весь текст в батнике
Здесь очень много строк
Так можно и спецсимволы :^)
`~!@#$%^&*()_+|\/.,;:'"
Три пустые строки



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

Отправлено: 16:00, 21-12-2012 | #4


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


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

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


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

Отправлено: 07:35, 27-07-2013 | #5


Ветеран


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

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


mactepcepbep@vk,

Тебе не надо "cd ..\"
Код: Выделить весь код
set "sFile=%~dp0..\12345\123.txt"
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:56, 27-07-2013 | #6


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


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

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


thanks, the script works well.

Последний раз редактировалось mactepcepbep@vk, 27-07-2013 в 09:40.


Отправлено: 09:27, 27-07-2013 | #7


Аватара для V!RTuE

Пользователь


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

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


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

Отправлено: 04:50, 12-12-2022 | #8


Ветеран


Contributor


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

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


Цитата V!RTuE:
такого функционала нет »
Можно написать с заменой More на вывод Echo в цикле, тогда возможны проблемы со спецсимволами. У Вас что в тексте?
Цитата V!RTuE:
Просто есть код, который обязательно должен быть в конце. »
Почему, что, его нельзя оформить процедурой и вставить перед выводимым текстом? Как пример:
Код: Выделить весь код
@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
Создаем большой текст
Весь текст в батнике
Здесь очень много строк
Так можно и спецсимволы :^)
`~!@#$%^&*()_+|\/.,;:'"
Три пустые строки
Последняя строка

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

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

Отправлено: 09:25, 12-12-2022 | #9


Аватара для V!RTuE

Пользователь


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

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


Цитата megaloman:
Можно написать с заменой More на вывод Echo в цикле, тогда возможны проблемы со спецсимволами. У Вас что в тексте? »
Спецсимволов полно. Текст более 200 строк. Содержимое файла openssl-1.0.0.cnf (программы OpenVPN)
Цитата megaloman:
Почему, что, его нельзя оформить процедурой и вставить перед выводимым текстом? »
Нельзя, так как используется этот код . Там обязательное условие, что он должен быть в конце.
В принципе уже задачу решил, но не копируются пустые строки (в данном случае абсолютно не критично), но для красоты хотелось бы. Да и просто на будущее знать как можно реализовать подобную задачу.
Вот рабочий код. Реализовано через поиск начальной и конечной строки
Код: Выделить весь код
...
: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. Подобных решений нигде не встречал еще
Скрытый текст

Последний раз редактировалось V!RTuE, 12-12-2022 в 21:37.


Отправлено: 21:25, 12-12-2022 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
AVI файл проигрывается с большой скоростью Marina222 Хочу все знать 10 31-05-2011 18:27
[решено] Как записать большой образ на диск? systeman Хочу все знать 5 08-11-2010 10:56
С помощью чего записать DVD5? SergeyGUG Видео и аудио: обработка и кодирование 1 02-04-2010 15:49
CMD/BAT - [решено] Как с помощью bat-ника записать названия папок в текстовый файл? Nun-Nun Скриптовые языки администрирования Windows 9 23-02-2010 20:15
Как разбить большой кусок текста на несколько частей chem1 Вебмастеру 11 25-05-2008 16:32




 
Переход