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

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

XXXp 10-07-2015 02:57 2527345

Произвольный запуск одного из бат файлов
 
Помогите, очень нужна помощь.
Есть 6 batников, допустим c:/bat/1.bat, c:/bat/2.bat, c:/bat/3.bat и тд., нужно запускать один из них в произвольном (random) порядке.
Заранее огромное спасибо!

Anonymоus 10-07-2015 06:57 2527357

Код:

@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 10-07-2015 08:16 2527366

Код:

@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 11-07-2015 01:26 2527618

Foreigner, Anonymоus, Спасибо большое!

XXXp 11-07-2015 01:42 2527620

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

Foreigner 11-07-2015 08:45 2527654

XXXp, замени goto:eof на exit

Georgio 11-07-2015 10:48 2527673

Цитата:

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




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

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

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

Цитата Foreigner
замени goto:eof на exit »

.

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

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


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

call "c:\bat\%bat%"
.

Foreigner 11-07-2015 11:08 2527675

Цитата:

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

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

Georgio 11-07-2015 11:33 2527681

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

C:\Windows\system32\cmd.exe  /K "c:\bat\example.bat"
,
а такое окно само не закроется.

Foreigner 11-07-2015 13:05 2527695

Georgio, А понял, ты имеешь ввиду тот батник, который запустится

XXXp 11-07-2015 23:55 2527867

Georgio, Спасибо большое! Помогло!


Время: 10:35.

Время: 10:35.
© OSzone.net 2001-