CMD/BAT - [решено] Произвольный запуск одного из бат файлов

Аватара пользователя
XXXp

CMD/BAT - [решено] Произвольный запуск одного из бат файлов

Сообщение XXXp »

Помогите, очень нужна помощь.

Есть 6 batников, допустим c:/bat/1.bat, c:/bat/2.bat, c:/bat/3.bat и тд., нужно запускать один из них в произвольном (random) порядке.

Заранее огромное спасибо!
Аватара пользователя
XXXp

Re: CMD/BAT - [решено] Произвольный запуск одного из бат файлов

Сообщение XXXp »

Код:

Код: Выделить всё

@Echo Off
SetLocal EnableDelayedExpansion
:: Задаём имена файлов для запуска через запятую, пробелы в именах допустимы.
Set Files[]=one.bat,two.bat,three.bat,two hundreds.bat,something.exe
:: Подсчитываем общее число указанных файлов и пишем их имена в переменные
Set i=0
Set "Files[]=%Files[]:,=" "%"
Set "Files[]="%Files[]%""
For %%A In (%Files[]%) Do (
	Set /A i+=1
	Set Files[!i!]=%%~A
)
:: С помощью ГПСЧ выбираем выбираем случайный файл из списка и запускаем его
Echo %Random%!Random!>nul
Set /A n=(!i!*!Random!/32768)+1
Start "" "!Files[%n%]!"
Pause&Exit
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Произвольный запуск одного из бат файлов

Сообщение Foreigner »

Код:

Код: Выделить всё

@echo off
setlocal
for %%i in ("c:\bat\*.bat") do call:1 "%%~nxi"
for /f "tokens=2 delims==" %%i in ('set bat_') do set "bat=%%i"
start "" "c:\bat\%bat%"
goto:eof
:1
set "bat_%random%=%~1"
Аватара пользователя
XXXp

Re: CMD/BAT - [решено] Произвольный запуск одного из бат файлов

Сообщение XXXp »

Вопрос только, там в бат файлах у меня простейшие действия типа move, copy и тд. Как сделать чтобы после запуска ваших скриптов и выполнения команды из рандомного батника, cmd.exe закрывался, а то он у меня остается запущенным в режиме командной строки...
Аватара пользователя
XXXp

Re: CMD/BAT - [решено] Произвольный запуск одного из бат файлов

Сообщение XXXp »

Цитата XXXp:



Как сделать чтобы после запуска ваших скриптов и выполнения команды из рандомного батника, cmd.exe закрывался, а то он у меня остается запущенным в режиме командной строки...
CMD/BAT - [решено] Произвольный запуск одного из бат файлов










Ещё вчера заметил, что и Anonymоus, и Foreigner, как сговорившисьИзображение, для вызова пакетного файла используют команду "START".



При таком способе вызова действительно окно "cmd.exe" остаётся открытым, так как пакетный файл запускается интерпретатором командной строки по умолчанию с ключом "/K" ("выполнение указанной команды (строки) без последующего завершения").



В этом случае не поможет даже
Цитата Foreigner:



замени goto:eof на exit
CMD/BAT - [решено] Произвольный запуск одного из бат файлов




.



Чтобы этого не происходило, для команды "START" надо использовать такую конструкцию:

Код:

Код: Выделить всё

start "" cmd /c "c:\bat\%bat%"

.





А вообще для вызова пакетного файла лучше использовать команду "CALL":

Код:

Код: Выделить всё

call "c:\bat\%bat%"

.
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Произвольный запуск одного из бат файлов

Сообщение Foreigner »

Цитата Georgio:



В этом случае не поможет даже
CMD/BAT - [решено] Произвольный запуск одного из бат файлов




Почему? Запускающий батник отработает и окно закроется.
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Произвольный запуск одного из бат файлов

Сообщение Foreigner »

У вызываемого пакетного файла нет своего окна. Есть окно процесса "cmd.exe" c командной строкой

Код:

Код: Выделить всё

C:\Windows\system32\cmd.exe  /K "c:\bat\example.bat"

,

а такое окно само не закроется.
Аватара пользователя
Georgio

Re: CMD/BAT - [решено] Произвольный запуск одного из бат файлов

Сообщение Georgio »

У вызываемого пакетного файла нет своего окна. Есть окно процесса "cmd.exe" c командной строкой

Код:

Код: Выделить всё

C:\Windows\system32\cmd.exe  /K "c:\bat\example.bat"

,

а такое окно само не закроется.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»