Показать полную графическую версию : [решено] Произвольный запуск одного из бат файлов
Помогите, очень нужна помощь.
Есть 6 batников, допустим c:/bat/1.bat, c:/bat/2.bat, c:/bat/3.bat и тд., нужно запускать один из них в произвольном (random) порядке.
Заранее огромное спасибо!
Anonymоus
10-07-2015, 06:57
@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
@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"
Foreigner, Anonymоus, Спасибо большое!
Вопрос только, там в бат файлах у меня простейшие действия типа move, copy и тд. Как сделать чтобы после запуска ваших скриптов и выполнения команды из рандомного батника, cmd.exe закрывался, а то он у меня остается запущенным в режиме командной строки...
Foreigner
11-07-2015, 08:45
XXXp, замени goto:eof на exit
Как сделать чтобы после запуска ваших скриптов и выполнения команды из рандомного батника, cmd.exe закрывался, а то он у меня остается запущенным в режиме командной строки... »
Ещё вчера заметил, что и Anonymоus, и Foreigner, как сговорившись:), для вызова пакетного файла используют команду "START".
При таком способе вызова действительно окно "cmd.exe" остаётся открытым, так как пакетный файл запускается интерпретатором командной строки по умолчанию с ключом "/K" ("выполнение указанной команды (строки) без последующего завершения").
В этом случае не поможет даже замени goto:eof на exit ».
Чтобы этого не происходило, для команды "START" надо использовать такую конструкцию: start "" cmd /c "c:\bat\%bat%".
А вообще для вызова пакетного файла лучше использовать команду "CALL": call "c:\bat\%bat%".
Foreigner
11-07-2015, 11:08
В этом случае не поможет даже »
Почему? Запускающий батник отработает и окно закроется.
У вызываемого пакетного файла нет своего окна. Есть окно процесса "cmd.exe" c командной строкой C:\Windows\system32\cmd.exe /K "c:\bat\example.bat",
а такое окно само не закроется.
Foreigner
11-07-2015, 13:05
Georgio, А понял, ты имеешь ввиду тот батник, который запустится
Georgio, Спасибо большое! Помогло!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.