Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Роман Ильховский Ученик (120), на голосовании 1 год назад
Как сделать bat файл который бы записывал рандомное число в другой bat файл, но в конце определенной строчке?
Например есть два bat файла, первый 1.bat , второй 2.bat
Файле 2.bat есть строка +strice forv = >
вот надо чтоб файл 1.bat вставлял в строку +strice forv = > между знаками = и > рандомное число от 0 до 999999999 и по возможности далее запускал файл 2.bat
Голосование за лучший ответ
⎛⎝ṦҜẎ₦Ễ₮⎠⎞ Просветленный (38542) 2 года назад
Для выполнения этой задачи можно использовать команду `set /a` для генерации рандомного числа и команду `findstr /C` для поиска нужной строки в файле 2.bat.

Вот как может выглядеть содержимое файла 1.bat:

```
 @echo off  

set /a "random_number=%RANDOM% * 999999999 / 32768"

echo Random number: %random_number%

findstr /C:"+strice forv = >" 2.bat >nul

if %errorlevel% equ 0 (

powershell -Command "(Get-Content 2.bat) -replace '(?<=+strice forv = >)(.*)(?=<)', ' %random_number%'" >2_new.bat

move /y 2_new.bat 2.bat >nul

)

call 2.bat

```

Этот скрипт сначала генерирует случайное число и выводит его в консоль. Затем он ищет строку "+strice forv = >" в файле 2.bat. Если строка найдена, он использует Powershell для замены числа в строке. Новый файл 2_new.bat создается, а затем переименовывается в 2.bat. Наконец, он вызывает файл 2.bat.

Обратите внимание, что этот скрипт будет работать только на компьютерах с установленной Powershell. Если она не установлена, замените команду `powershell` на что-то другое, например, `sed` или `awk`, если вы работаете в Linux.
Роман ИльховскийУченик (120) 2 года назад
Он создает файл 2.bat с данным текстом
Недопустимый шаблон регулярного выражения (?<=+strice forv = >)(.*)(?=<).
строка:1 знак:1
+ (Get-Content 2.bat) -replace '(?<=+strice forv = >)(.*)(?=<)', ' 2631 ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: ((?<=+strice forv = >)(.*)(?=<):String) [], RuntimeException
+ FullyQualifiedErrorId : InvalidRegularExpression
Андрей Панарин Искусственный Интеллект (274671) 2 года назад
Можно при вызове 2.bat подать в него аргумент %1.
Тогда переписывать 2.bat не придется.
Роман ИльховскийУченик (120) 2 года назад
Он создает файл 2.bat с данным текстом
Недопустимый шаблон регулярного выражения (?<=+strice forv = >)(.*)(?=<).
строка:1 знак:1
+ (Get-Content 2.bat) -replace '(?<=+strice forv = >)(.*)(?=<)', ' 2631 ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: ((?<=+strice forv = >)(.*)(?=<):String) [], RuntimeException
+ FullyQualifiedErrorId : InvalidRegularExpression
Похожие вопросы