![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Создание текстового файла с набором символов |
|
CMD/BAT - [решено] Создание текстового файла с набором символов
|
Пользователь Сообщения: 88 |
Уважаемые знатоки!
Помогите создать батник при запуске которого создавался бы текстовый файл с указанным количеством произвольных символов (буквы, цифры, знаки). Варианты - либо я вношу количество символов в батник (допустим 592283), либо вопрос при запуске - "введите количество символов". Спасибо заранее!)) |
|
Отправлено: 23:06, 26-03-2019 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать VBS. Если в имени файла русские буквы - сохранить в 1251 кодировке
NMax = 56789 OutFile = "Z:\Box_Out\полная фигня.txt" N1 = 32 N2 = 127 NS = N2 - N1 ReDim S(NS) For i = 0 To NS S(i) = Chr(i + N1) Next NS1 = NS + 1 SS = "" Randomize For i = 1 To NMax SS = SS + S(Int(NS1 * Rnd)) Next Set FSO = CreateObject("Scripting.FileSystemObject") With FSO.CreateTextFile(OutFile, True) .Write SS .Close End With MsgBox Len(SS) Набор символов можно взять с кодами от 0 до 255. (N1 и N2). Если можно Цитата 4zz:
|
|
------- Последний раз редактировалось megaloman, 28-03-2019 в 01:43. Отправлено: 01:37, 28-03-2019 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Option Explicit Dim dtNow Dim strSourceFile Dim iCount Dim i, j Dim sValue dtNow = Now() strSourceFile = "C:\Мои проекты\0254\полная фигня 2.txt" iCount = 2^10 Randomize Timer With WScript.CreateObject("Scripting.FileSystemObject").CreateTextFile(strSourceFile, True) For i = 1 To iCount sValue = "" For j = 1 To iCount sValue = sValue & Chr(Int(96 * Rnd()) + 32) Next .Write sValue Next .Close End With WScript.Echo DateDiff("s", dtNow, Now()) WScript.Quit 0 |
Отправлено: 03:29, 28-03-2019 | #12 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Iska, И всё-таки она вертится! Впечатлился скоростью работы Вашего скрипта. Ранее перед записью в файл я формировал всю строку целиком, затем скидывал в файл. ~500000 символов формировалось долго.
Вот vbs-вариант, в котором все символы генерируются случайным образом, но запись на диск ведётся квантами по 1024 знака как у Вас, а не целиком.
Отрабатывает за считанные секунды на моём допотопном ноуте NMax = 543210 OutFile = "Z:\Box_Out\полная фигня 543210.txt" N1 = 0 N2 = 255 Quant = 1024 NS = N2 - N1 ReDim S(NS) For i = 0 To NS S(i) = Chr(i + N1) Next NS1 = NS + 1 SS = "" Randomize Set FSO = CreateObject("Scripting.FileSystemObject") With FSO.CreateTextFile(OutFile, True) j = 0 For i = 1 To NMax j = j + 1 SS = SS + S(Int(NS1 * Rnd)) If j = Quant Then j = 0 .Write SS SS = "" End If Next If j > 0 Then .Write SS .Close End With MsgBox "Скрипт завершен" |
------- Последний раз редактировалось megaloman, 28-03-2019 в 10:19. Отправлено: 09:54, 28-03-2019 | #13 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать 50000 — многовато, начинают сказываться издержки на конкатенацию строк.
Для примера
0004.vbs: Option Explicit Dim dtNow Dim strSourceFile Dim iCount Dim i, j Dim sValue dtNow = Now() strSourceFile = "C:\Мои проекты\0254\полная фигня 2.txt" iCount = 2^15 Randomize Timer With WScript.CreateObject("Scripting.FileSystemObject").CreateTextFile(strSourceFile, True) For i = 1 To iCount sValue = "" For j = 1 To 2^10 ' Всего — 2^25, 32Мб выйдет sValue = sValue & Chr(Int(96 * Rnd()) + 32) Next .Write sValue Next .Close End With WScript.Echo DateDiff("s", dtNow, Now()) WScript.Quit 0 dtNow = Now()
NMax = 2^25
OutFile = "C:\Мои проекты\0254\полная фигня 543210.txt"
N1 = 0
N2 = 255
Quant = 50000
NS = N2 - N1
ReDim S(NS)
For i = 0 To NS
S(i) = Chr(i + N1)
Next
NS1 = NS + 1
SS = ""
Randomize
Set FSO = CreateObject("Scripting.FileSystemObject")
With FSO.CreateTextFile(OutFile, True)
j = 0
For i = 1 To NMax
j = j + 1
SS = SS + S(Int(NS1 * Rnd))
If j = Quant Then
j = 0
.Write SS
SS = ""
End If
Next
If j > 0 Then .Write SS
.Close
End With
'MsgBox "Скрипт завершен"
WScript.Echo DateDiff("s", dtNow, Now())
![]() |
Отправлено: 10:17, 28-03-2019 | #14 |
Пользователь Сообщения: 88
|
Профиль | Отправить PM | Цитировать megaloman, Iska,
Спасибо!!! ) ![]() |
Отправлено: 10:26, 28-03-2019 | #15 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Iska, Уже понял и исправил. Как подсчитать оптимум?
|
------- Отправлено: 10:26, 28-03-2019 | #16 |
Пользователь Сообщения: 88
|
Профиль | Отправить PM | Цитировать Извиняюсь.., а как прописать избранные и исключенные символы?
|
Отправлено: 11:06, 28-03-2019 | #17 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Цитата 4zz:
|
||
Отправлено: 11:33, 28-03-2019 | #18 |
Пользователь Сообщения: 88
|
Профиль | Отправить PM | Цитировать megaloman,
В cmd я пытался регулировать в Вашем варианте: rem не использовать ^%&|<>"()'= Set "Symb=+1234567890-QWERTYUIOPqwertyuiopASDFGHJKLasdfghjklZXCVBNM?zxcvbnm" |
Отправлено: 11:52, 28-03-2019 | #19 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Цитата 4zz:
Задавайте литерал с символами сами внутри кавычек. Кавычка " прописывается в литерале удвоением ""
NMax = 5432109 OutFile = "Z:\Box_Out\полная фигня 5432109.txt" AllChr = "~!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:""|ZXCVBNM<>?`1234567890-=qwertyuiop[]asdfghjkl;'\zxcvbnm,./ " Quant = 1024 N1 = 1 N2 = Len(AllChr) NS = N2 - N1 ReDim S(NS) For i = 0 To NS S(i) = Mid(AllChr, i + 1, 1) Next NS1 = NS + 1 SS = "" Randomize Set FSO = CreateObject("Scripting.FileSystemObject") With FSO.CreateTextFile(OutFile, True) j = 0 For i = 1 To NMax j = j + 1 SS = SS + S(Int(NS1 * Rnd)) If j = Quant Then j = 0 .Write SS SS = "" End If Next If j > 0 Then .Write SS .Close End With MsgBox "Скрипт завершен" в CMD не есть задание исключений, это комментарий для моей/Вашей памяти В vbs неприятностей с этими знаками нет, в строке можно задать с клавиатуры все символы. |
|
------- Последний раз редактировалось megaloman, 28-03-2019 в 12:20. Отправлено: 12:10, 28-03-2019 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Проблема ч набором символов | 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 |
|