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

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

Ответить
Настройки темы
CMD/BAT - [решено] Поиск строки в файле и замена её на набор из случайных чисел и букв

Аватара для Sub-Zero

Старожил


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

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


Изменения
Автор: Sub-Zero
Дата: 08-02-2011
Нужен bat'ник делающий следующее.
Есть текстовый файл - в нем есть строка вида: Name = "Василий"
Нужно найти эту строку и поменять чтобы получилось: Name = "8n29a9h3z5"
При этом 8n29a9h3z5 при каждом запуске bat файла должно формироваться случайным образом из букв и цифр и иметь разную длину - от 10 до 15 символов.
Вариант с постоянным количеством случайных символов - 15 тоже подойдет.

Отправлено: 00:40, 08-02-2011

 

Аватара для gora

Ушёл из жизни


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

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


Код: Выделить весь код
@Echo Off
SetLocal enabledelayedexpansion
:: Батник и исходный файл в кодировке кириллица Windows (1251)
:: Исходный файл
Set file=list name.txt
:: Число символов в новом имени
Set I=15

Set N=62& Set CHAR=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWQYZ
For /L %%a In (1,1,%I%) Do Set /a R=N*!random!/32768& Call Set PW=%%CHAR:~!R!,1%%!PW!
(
For /F "usebackq tokens=* delims=" %%i In ("%file%") Do If "%%i"=="Name = "Василий"" (Echo Name = "%PW%") Else Echo %%i
)>"%file%t"
Del "%file%"
Ren "%file%t" "%file%"

Отправлено: 08:45, 08-02-2011 | #2



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

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


Googler


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

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


Код: Выделить весь код
@echo off

call:Rnd36Str 10 RND
call:SetParm sec.txt NewAdministratorName "%RND:~-15%"

EXIT /b

:SetParm %file% %parm% %val%
::--------------------------
SETLOCAL DisableDelayedExpansion
 set $TMP=%TEMP%\%RANDOM%%RANDOM%.tmp
(for /f "tokens=* delims=01234567890" %%a in ('type "%~1"^|findstr /n "^"') do (
  set "$a=%%a"& SETLOCAL EnableDelayedExpansion
  for /f "tokens=1 delims== " %%b in ("!$a:~1!") do if /i "%%b"=="%~2" set "$a=:%~2 = %3"
  echo(!$a:~1!
  ENDLOCAL
))>"%$TMP%"
copy "%$TMP%" "%~1">nul&& del "%$TMP%"
ENDLOCAL& EXIT /b

:Rnd36Str %cnt% %var%
::-------------------
SETLOCAL EnableDelayedExpansion& set "str="
 set "map=;0-0;1-1;2-2;3-3;4-4;5-5;6-6;7-7;8-8;9-9;10-a;11-b;12-c;13-d;14-e;15-f;16-g;17-h;18-i;19-j;20-k;21-l;22-m;23-n;24-o;25-p;26-q;27-r;28-s;29-t;30-u;31-v;32-w;33-x;34-y;35-z"
 for /L %%L in (1,1,%~1) do (set /a dec=!RANDOM!
   for /L %%N in (1,1,6) do if !dec! gtr 0 (
   set /a "d=dec%%36,dec/=36"
   call set h=%%map:*;!d!-=%%
   set str=!h:~0,1!!str!
 ))
ENDLOCAL& set "%~2=%str%"& EXIT /b

Последний раз редактировалось amel27, 08-02-2011 в 15:50.


Отправлено: 12:18, 08-02-2011 | #3


Аватара для Sub-Zero

Старожил


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

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


Вложения
Тип файла: txt sec.txt
(392 байт, 25 просмотров)

Спасибо за ответы! Но...ни первый скрипт - он просто обнулял исходный файл ни второй - он удалял все содержимое и вносил туда кучу символов с задачей не справились.
Есть подозрение что вся причина в кодировке файла UCS-2. В то время как скриптам надо 1251.
Шлю файл который нужно обработать. Нужно заменить в строке NewAdministratorName = "Администратор" на NewAdministratorName = "15 случайных символов (букв и цифр)"

Последний раз редактировалось Sub-Zero, 08-02-2011 в 13:48.


Отправлено: 13:25, 08-02-2011 | #4


Аватара для gora

Ушёл из жизни


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

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


Вложения
Тип файла: 7z 1_s_110208_14-51.7z
(9.0 Kb, 51 просмотров)

Цитата Sub-Zero:
задачей не справились. »
Не мешало бы в задаче упомянуть, что Ваш текстовый файл в кодировке UTF16-LE, с которой батники не работают!
Читайте, что у меня написано:
Цитата gora:
:: Батник и исходный файл в кодировке кириллица Windows (1251) »
PS
Прикрепил работающий комплект.

Последний раз редактировалось gora, 08-02-2011 в 14:53.

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

Отправлено: 13:49, 08-02-2011 | #5


Googler


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

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


Код: Выделить весь код
@echo off

call:Rnd36Str 10 RND
call:SetParm sec.txt NewAdministratorName "%RND:~-15%"
call:OEM2UTF sec.txt

EXIT /b

:OEM2UTF %file%
::-------------
SETLOCAL& set $TMP=%TEMP%\%RANDOM%%RANDOM%.tmp
<nul >"%$TMP%" set /P $$=яю
 cmd /u/c type "%~1" >>"%$TMP%"
 copy "%$TMP%" "%~1">nul&& del "%$TMP%"
ENDLOCAL& EXIT /b

:SetParm %file% %parm% %val%
::--------------------------
SETLOCAL DisableDelayedExpansion
 set $TMP=%TEMP%\%RANDOM%%RANDOM%.tmp
(for /f "tokens=* delims=01234567890" %%a in ('type "%~1"^|findstr /n "^"') do (
  set "$a=%%a"& SETLOCAL EnableDelayedExpansion
  for /f "tokens=1 delims== " %%b in ("!$a:~1!") do if /i "%%b"=="%~2" set "$a=:%~2 = %3"
  echo(!$a:~1!
  ENDLOCAL
))>"%$TMP%"
copy "%$TMP%" "%~1">nul&& del "%$TMP%"
ENDLOCAL& EXIT /b

:Rnd36Str %cnt% %var%
::-------------------
SETLOCAL EnableDelayedExpansion& set "str="
 set "map=;0-0;1-1;2-2;3-3;4-4;5-5;6-6;7-7;8-8;9-9;10-a;11-b;12-c;13-d;14-e;15-f;16-g;17-h;18-i;19-j;20-k;21-l;22-m;23-n;24-o;25-p;26-q;27-r;28-s;29-t;30-u;31-v;32-w;33-x;34-y;35-z"
 for /L %%L in (1,1,%~1) do (set /a dec=!RANDOM!
   for /L %%N in (1,1,6) do if !dec! gtr 0 (
   set /a "d=dec%%36,dec/=36"
   call set h=%%map:*;!d!-=%%
   set str=!h:~0,1!!str!
 ))
ENDLOCAL& set "%~2=%str%"& EXIT /b
P.S. кодировка самого батника WIN 1251
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:56, 08-02-2011 | #6


Аватара для Sub-Zero

Старожил


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

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


gora и amel27 - спасибо огромное! Все работает!

Отправлено: 18:54, 08-02-2011 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Подсчет количества целых чисел в текстовом файле Hardip Скриптовые языки администрирования Windows 5 08-12-2010 14:49
CMD/BAT - [решено] Поиск чисел внутри файла Hardip Скриптовые языки администрирования Windows 5 19-11-2010 15:20
C/C++ - Как правильно задать диапазон генерации случайных чисел perfomanse Программирование и базы данных 6 03-07-2010 22:10
[решено] поиск строки в WORD файле.... garanov AutoIt 3 19-03-2010 09:16
Генератор случайных чисел Murrey Хочу все знать 3 22-08-2006 13:00




 
Переход