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

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

Ответить
Настройки темы
CMD/BAT - [решено] Создание текстового файла с набором символов
4zz 4zz вне форума

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


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

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


Уважаемые знатоки!
Помогите создать батник при запуске которого создавался бы текстовый файл с указанным количеством произвольных символов (буквы, цифры, знаки).
Варианты - либо я вношу количество символов в батник (допустим 592283), либо вопрос при запуске - "введите количество символов".
Спасибо заранее!))

Отправлено: 23:06, 26-03-2019

 

Ветеран


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

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


Код: Выделить весь код
>"Текстовый файл.txt" echo Произвольное количество каких-то там [1,2,5,$,#], знаков
не все знаки удастся вывести таким образом
Цитата 4zz:
вопрос при запуске - "введите количество символов" »
set /p /?
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:16, 27-03-2019 | #2



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

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


Ветеран


Contributor


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

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


4zz,
Цитата alpap:
не все знаки удастся вывести таким образом »
Плюс
Цитата 4zz:
количество символов в батник (допустим 592283), »
такую длинную строку в CMD обработать не удастся.
Поэтому, сакраментальный вопрос: зачем это нужно и почему CMD, а не, допустим, vbs?
Какие символы при этом допустимы?

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


Последний раз редактировалось megaloman, 27-03-2019 в 00:40.

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

Отправлено: 00:33, 27-03-2019 | #3


Аватара для yurfed

Ветеран


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

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


megaloman, не силён в написании скриптов, но рандомный вариант может быть использован, отключив неиспользуемые символы.
Только я не представляю зачем это нужно
Очередной BALON?

-------
Хочу ли я - Могу ли я - Говно ли я - Магнолия


Отправлено: 02:02, 27-03-2019 | #4


Ветеран


Contributor


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

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


4zz,
Вот вариант с клавиатурным набором знаков. Некоторые знаки валили скрипт, я их перечислил и не употребляю.
Не берусь судить, может еще какая-то зюкочка нагадит.
Код: Выделить весь код
@Echo Off
cls
	Set "Out=Z:\Box_Out\полная фигня.txt"
	Set /A Max=8765

rem не использовать ^%&|<>"()'=
	Set "Symb=~!#$*_+1234567890-QWERTYUIOP{}qwertyuiop[]ASDFGHJKL:asdfghjkl;\ZXCVBNM?zxcvbnm,./ Ё№ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮёйцукенгшщзхъфывапролджэячсмитьбю"
	
	Set /A NS=-1 &FOR /L %%i IN (0,1,255) DO (Call :Substr %%i "S" &&Set /A NS+=1)

	Set "Str="
	Set /A N=0
	Set /A M=0

	Set /A Quant=4000
	2>nul Del "%Out%"
	:Begin
		Set /A N+=1
		Set /A M+=1
		Set /A K=(%NS%+1)*%Random%/32768
		Call :Substr %K% "S"
		Set "Str=%Str%%S%"
		If %N% EQU %Quant% (
			Echo DownLoad %M%
			<Nul Set /P "S=%Str%">>"%Out%"

			Set "Str="
			Set "S="
			Set /A N=0
		)
	If %M% NEQ %Max% GoTo :Begin
	If %N% NEQ 0 <Nul (Echo DownLoad %M% &Set /P S=%Str%>>"%Out%")
Pause
GoTo :Eof

:Substr
	Call Set "@S=%%Symb:~%1,1%%"
	Set "%~2=%@S%"
	If "%@S%"=="" Exit /B 1
Exit /B 0
Длина файла скриптом не ограничивается, весь вопрос - а сколько времени займёт, допустим, генерирование и запись строки из нескольких сот тысяч символов.

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


Последний раз редактировалось megaloman, 27-03-2019 в 17:09. Причина: Уточнил набор знаков

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

Отправлено: 16:05, 27-03-2019 | #5


Ветеран


Contributor


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

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


Минимум изменений, но экономия по времени 20-25%.
Отличие - в способе извлечения символа из набора
Код: Выделить весь код
@Echo Off
cls
	Set "Out=Z:\Box_Out\полная фигня.txt"
	Set /A Max=8765

rem не использовать ^%&|<>"()'=
	Set "Symb=~!#$*_+1234567890-QWERTYUIOP{}qwertyuiop[]ASDFGHJKL:asdfghjkl;\ZXCVBNM?zxcvbnm,./ Ё№ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮёйцукенгшщзхъфывапролджэячсмитьбю"
	
	Set /A NS=-1 &FOR /L %%i IN (0,1,255) DO (Call :Substr %%i "S" &&(Set /A NS+=1 &Call Set "@@@%%NS%%=%%S%%"))

	Set "Str="
	Set /A N=0
	Set /A M=0

	Set /A Quant=4000
	2>nul Del "%Out%"
	:Begin
		Set /A N+=1
		Set /A M+=1
		Set /A K=(%NS%+1)*%Random%/32768
		Call Set "Str=%Str%%%@@@%K%%%"
		If %N% EQU %Quant% (
			Echo DownLoad %M%
			<Nul Set /P "S=%Str%">>"%Out%"

			Set "Str="
			Set "S="
			Set /A N=0
		)
	If %M% NEQ %Max% GoTo :Begin
	If %N% NEQ 0 <Nul (Echo DownLoad %M% &Set /P S=%Str%>>"%Out%")
Pause
GoTo :Eof

:Substr
	Call Set "@S=%%Symb:~%1,1%%"
	Set "%~2=%@S%"
	If "%@S%"=="" Exit /B 1
Exit /B 0
В обоих кодах запись в файл ведётся квантами. Почему-то считал, чем больше квант, тем быстрее работа скрипта. Оказалось, не так однозначно. Буферизация? Но, в любом случае, генерация случайного набора занимает много больше времени.

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


Последний раз редактировалось megaloman, 27-03-2019 в 17:09.

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

Отправлено: 16:47, 27-03-2019 | #6

4zz 4zz вне форума Автор темы

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


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

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


megaloman,
Спасибо!
Все работает!))
Это нужно для файла в котором должно быть определенное количество символов, в разное время)

Отправлено: 19:14, 27-03-2019 | #7


Ветеран


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

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


Цитата megaloman:
Буферизация? »
Скорее всего.

Отправлено: 22:57, 27-03-2019 | #8

4zz 4zz вне форума Автор темы

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


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

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


Работает, но очень долго..(
А может это можно ускорить копированием -вставкой?
Или из готового текстового файла посчитать количество символов и оставить необходимое, остальное удалить?

Последний раз редактировалось 4zz, 27-03-2019 в 23:28.


Отправлено: 23:21, 27-03-2019 | #9


Ветеран


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

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


4zz, а может Вы подумаете про переход на WSH/PoSH вместо пакетных файлов?
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:39, 27-03-2019 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Проблема ч набором символов speed8@vk Ноутбуки 3 08-09-2014 16:17
CMD/BAT - Сборка текстового файла из содержимого другого текстового файла icomboy Скриптовые языки администрирования Windows 0 10-09-2013 15:17
CMD/BAT - [решено] Создание текстового файла с последовательными числами указанного диапазона 91892823 Скриптовые языки администрирования Windows 2 03-08-2012 06:43
CMD/BAT - чтение такстового файла и создание текстового с частичным содержанием прочтеного вайл Anufriev Скриптовые языки администрирования Windows 1 28-06-2012 11:52
CMD/BAT - [решено] Создание текстового файла при условии его отсутствия в папке spilberg Скриптовые языки администрирования Windows 1 12-07-2009 15:58




 
Переход