Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] изменить числа в bat файлах заданным пользователем (http://forum.oszone.net/showthread.php?t=349864)

Alexander_88 24-10-2021 13:25 2969636

изменить числа в bat файлах заданным пользователем
 
Здравствуйте, есть папка с bat файлами.. вот пример одного из них:

Код:

@echo off
 
setlocal
chcp 1251>nul
 
set quantity=20
set "source=C:\work\POSTS\01 start.txt"
set "destination=C:\work\Scripts\Create random posts\posts\01 start.txt"
set "border=//=================="
 
set "temp_file=%temp%\%random%.vbs"
for /f %%i in ('findstr /rx "%border:/=\/%" "%source%"^| find /c /v ""') do (
 for /f %%j in ('set /a %%i-1') do if %%j lss %quantity% (call:# %%j %%j) else (call:# %%j %quantity%)
)
del "%temp_file%"
 
endlocal
exit /b
 
 
:#
 for /l %%i in (1 1 %1) do call set $%%random%%= %%i
 for /f "tokens=* delims=$0123456789=" %%i in ('set $') do (
  set /a count+=1& for /f %%j in ('set /a count') do if %%j leq %2 (
  >"%temp_file%" (echo WScript.StdOut.Write(Split(WScript.CreateObject("Scripting.FileSystemObject"^)_
                  echo .OpenTextFile("%source%"^).ReadAll(^),"%border%"^&vbCrLf^)(%%i^)^))
  >>"%destination%" (cscript //nologo "%temp_file%"& cmd /v /c echo.!border!)) else exit /b
 )
 
 exit /b

необходим скрипт (на bat или powershell), который при запуске будет спрашивать число, которое я должен ввести.. а после ввода, прописать это число во всех bat файлах (папку с bat файлами и тоже должен задать).... Прописать это число нужно в выделенной мной строчке, в коде.
Код:

set quantity=20
т.е. к примеру если мы указываем число 40, то эта строчка должна стать такой:
Код:

set quantity=40
:)

megaloman 24-10-2021 14:32 2969638

Alexander_88, Организуйте текстовый ini-файл, который можете править любым редактором, например
"Z:\Box_In\quantity.ini" (там нарисуете Ваше число). Либо организуете батник,который при запуске будет спрашивать число, которое надо ввести.. а после ввода, запишет его в этот ini-файл.
В батниках один раз замените
set quantity=40
на
Set /P quantity=<"Z:\Box_In\quantity.ini"
Например:
Код:

@Echo Off
cls
        Set /P quantity=<"Z:\Box_In\quantity.ini"
Echo %quantity%
pause
Exit /B


Iska 24-10-2021 15:52 2969645

Цитата:

Цитата Alexander_88
прописать это число во всех bat файлах (папку с bat файлами и тоже должен задать).... Прописать это число нужно в выделенной мной строчке, в коде. »

Не надо. Никогда так не делайте. Используйте либо параметры пакетного файла, либо метод, предложенный выше коллегой megaloman.

Alexander_88 24-10-2021 16:54 2969652

megaloman, Iska, спасибо за ответы, попробую использовать сегодня-завтра

Alexander_88 24-10-2021 17:12 2969658

Код:

@Echo Off
cls
        Set /P quantity=<"Z:\Box_In\quantity.ini"
Echo %quantity%
pause
Exit /B

мне пишет такое при запуске
Режим вывода команд на экран (echo) отключен

megaloman 24-10-2021 18:43 2969662

Alexander_88, Вы свой путь к файлу прописали вместо "Z:\Box_In\quantity.ini"? Вообще Вы его создали?

Alexander_88 24-10-2021 21:09 2969684

megaloman, да, вот код:

Код:

@Echo off
cls
        Set /P quantity=<"C:\work\Scripts\Create random posts\quality posts.ini"
Echo %quantity%
pause
Exit /B

Если файл quality posts.ini пустой, то ошибка та, которую я писал … если в этом файле указать к примеру число 0, то появляется вот такое:
Код:

0
Для продолжения нажмите любую клавишу . . .

но сам скрипт не предлагает ввести цифру, ее нужно в ini файле вводить

megaloman 24-10-2021 21:43 2969686

Цитата:

Цитата megaloman
Alexander_88, Организуйте текстовый ini-файл, который можете править любым редактором, например
"Z:\Box_In\quantity.ini" (там нарисуете Ваше число). Либо организуете батник,который при запуске будет спрашивать число, которое надо ввести.. а после ввода, запишет его в этот ini-файл. »

Естественно
Цитата:

Цитата Alexander_88
сам скрипт не предлагает ввести цифру, ее нужно в ini файле вводить »

Это всего лишь пример, как изменить ваши батники.
Если настаиваете, вот батник для ввода (имхо, текстовым редактором это делать проще)
Код:

@Echo off
cls
        Set /A Min=10, Max=60
        Set "FileIni=C:\work\Scripts\Create random posts\quality posts.ini"
        :Begin
                Set /P "quantity=Input quantity. %Min%<=quantity<=%Max% ="
                If %Min% LEQ %quantity% If %quantity% LEQ %Max% (>"%FileIni%" Echo %quantity%& Exit /B)
                Echo Wrong quantity=%quantity%
                GoTo :Begin
Exit /B

Для контроля укажите возможные минимальное и максимальное значение и путь к ини-файлу.
Потом Ваши изменённые батники это значение подставят.

Alexander_88 25-10-2021 10:02 2969709

спасибо, все работает :)


Время: 22:50.

Время: 22:50.
© OSzone.net 2001-