Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
vavun
9866 / 5235 / 802
Регистрация: 07.04.2013
Сообщений: 15,192
1

Возможно ли: выполнение подпрограммы в отдельном процессе, одновременное выполнение двух подпрограмм?

30.11.2015, 18:29. Просмотров 1178. Ответов 13
Метки нет (Все метки)

Всех приветствую

Пример
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
 
call :PROG1
call :PROG2
exit /b
 
:PROG1
echo PROG1 action
pause
exit /b
 
:PROG2
echo PROG2 action
pause
exit /b
Вопрос:

Как можно выполнить :PROG2 не дожидаясь завершения :PROG1 ?
В идеале что то вроде start "" call :PROG1
И можно ли так вообще в пределах одного батника?

Заранее благодарю
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2015, 18:29
Ответы с готовыми решениями:

Одновременное выполнение
работаю с monkeyrunner.bat , он запускает python Скрипты на андройде....

Возможно ли в цикле For сделать тайм-аут на выполнение одной операции?
Добрый день ! Возможно ли в цикле For сделать таймаут на выполнение одной...

Выполнение двух команд в BAT-файле
Доброго времени суток, уважаемые форумчане! Столкнулся на работе с тем, что...

Одновременное выполнение двух классов
Это клиентская программа для анонимного сетевого чата программа состоит из...

Одновременное выполнение двух заданий?
Добрый вечер, Подскажите пожалуйста, как можно решить данную задачу: Для...

13
alpap
1806 / 1327 / 430
Регистрация: 26.04.2015
Сообщений: 4,536
30.11.2015, 19:22 2
vavun, Я в свое время тоже хотел подобного, хотел выполнение двух независимых for, но как и здесь полагаю пока не отработает одна другая спит, а если кто знает как возможна параллельная их работа то тоже буду премного благодарен.
0
vavun
9866 / 5235 / 802
Регистрация: 07.04.2013
Сообщений: 15,192
30.11.2015, 19:27  [ТС] 3
Цитата Сообщение от alpap Посмотреть сообщение
хотел выполнение двух независимых for,
start "" cmd /c for %a in ...

разве нет ?
0
alpap
1806 / 1327 / 430
Регистрация: 26.04.2015
Сообщений: 4,536
30.11.2015, 19:48 4
Windows Batch file
1
2
3
4
5
6
7
8
@echo on
for %%i in (dirp\*) do call :zp %%i
goto :eof
for %%j in (dirv\*) do call :zp %%j
goto :eof
:zp
 echo %1 Будет один только и только первый
pause
.
0
Dragokas
Эксперт WindowsАвтор FAQ
17049 / 7106 / 859
Регистрация: 25.12.2011
Сообщений: 10,918
Записей в блоге: 16
30.11.2015, 20:32 5
Лучший ответ Сообщение было отмечено vavun как решение

Решение

Без модификаций никак.
Но ты можешь написать враппер.

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@echo off
if "%~1" neq "" (call %*& exit /B)
 
call :WRAP :PROG1 "arg1"
call :WRAP :PROG2 "arg1" "arg2"
exit /b
 
:WRAP
start "" cmd /c ""%~f0" %*"
exit /B
 
:PROG1
echo PROG1 action - %*
pause
exit /b
 
:PROG2
echo PROG2 action - %*
pause
exit /b
2
vavun
9866 / 5235 / 802
Регистрация: 07.04.2013
Сообщений: 15,192
30.11.2015, 20:34  [ТС] 6
Dragokas, интересная мысль, по-экспериментирую )
0
Garry Galler
1824 / 1385 / 528
Регистрация: 28.10.2013
Сообщений: 3,532
30.11.2015, 20:36 7
vavun, alpap
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<# :
  @echo off
     powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -command ^
     "&{[ScriptBlock]::Create((cat '%~f0') -join [Char]10).Invoke(@(&{$args}%*))}"
    pause
#>
 
workflow RunParallel
    {
       Parallel
       {
            for ($i=0;$i -lt 100;$i++) {"первый цикл:[{0}]" -f $i}
            for ($j=0;$j -lt 100;$j++) {"второй цикл:[{0}]" -f $j}
            for ($k=0;$k -lt 100;$k++) {"третий цикл:[{0}]" -f $k}
       }
  }
 
RunParallel
PS: Правда в консоли (кроме powershell_ise.exe) вы ничего интересного не увидите, кроме мелькания непонятных надписей и потом одномоментного вывода всего сразу - так как здесь идет некая ну не совсем многопоточность, но близкая к ней технология распараллеливания задач. Но циклы будут выполнять итерации одновременно.
1
vavun
9866 / 5235 / 802
Регистрация: 07.04.2013
Сообщений: 15,192
30.11.2015, 20:41  [ТС] 8
Garry Galler, пример. офисное здание, 100500 машин. из них 50500 дохленьких офисников с windows XP на борту.

Что дальше ?
0
Garry Galler
1824 / 1385 / 528
Регистрация: 28.10.2013
Сообщений: 3,532
30.11.2015, 20:44 9
vavun,
Что дальше ?
Понятия не имею. Технологии не стоят на месте - на месте стоят люди, которые не идут с ними в ногу.
0
vavun
9866 / 5235 / 802
Регистрация: 07.04.2013
Сообщений: 15,192
30.11.2015, 20:47  [ТС] 10
Garry Galler, не всегда есть возможность идти в ногу со временем.
Никто не ставит под сомнение ни крутость PoSh, ни ваше знание предмета, но иногда лучше 10 строк на bat, чем одна на PoSh. Виной тому обратная совместимость.

Да и раздел cmd / bat как бы.
Решение различных задач на CMD не всегда имеет практическое значение. Зачастую это просто любопытство.
0
alpap
30.11.2015, 22:33
  #11

Не по теме:

Garry Galler, Начал углубляться уже в powershell, но еще габаритные вещи не постигаю пока, если не сильно затруднит, можно Ваш код (пост 7) к какому-то такому виду

Кликните здесь для просмотра всего текста
Windows Batch file
1
2
3
for /f "skip=3 tokens=1,2 delims= " %%i in ('powershell "Get-WmiObject -Class Win32_DesktopMonitor | select-object -property screenwidth, screenheight"') do (
 set rekr=%%~ix%%~j & echo %%~ix%%~j
)
(пока мне понятному) привести или близко к этому или пояснить детальнее.

0
Garry Galler
30.11.2015, 22:54
  #12

Не по теме:

alpap,
К такому виду - а-ля строка в кавычках - не получится (может и возможно, но я без понятия как - да и нечитабельно будет). В примере используются рабочие процессы - workflow, а они требуют специального синтаксиса. Поэтому их надо использовать либо напрямую из powershell, либо в том варианте гибрида с bat, который просто считывает код из батника и выполняет его. Примеры гибридов батника+PoSh с такой "шапкой"

Кликните здесь для просмотра всего текста
Код
<# :
  @echo off
     powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -command ^
     "&{[ScriptBlock]::Create((cat '%~f0') -join [Char]10).Invoke(@(&{$args}%*))}"
    pause
#>

уже ведь не раз здесь приводились - вопрос по ней или чему-то другому?

0
volodin661
2176 / 967 / 160
Регистрация: 10.12.2013
Сообщений: 3,233
30.11.2015, 23:59 13
Цитата Сообщение от vavun Посмотреть сообщение
но иногда лучше 10 строк на bat, чем одна на PoSh.
vavun,
надеюсь это не для красного словца была фраза, а есть реальные примеры?

Цитата Сообщение от vavun Посмотреть сообщение
Виной тому обратная совместимость.
о какой совместимости идёт речь и кто тут виноватый?
синтаксис cmd вдруг стал обратно совместим с command.com ?

Цитата Сообщение от vavun Посмотреть сообщение
Решение различных задач на CMD не всегда имеет практическое значение. Зачастую это просто любопытство.
С этим согласен на все 100, наблюдаю с болезненным любопытством, как в 21-ом веке вместо реализации современного shell продолжает существовать поделка пьяного студента экономического факультета.
0
alpap
01.12.2015, 00:02     Возможно ли: выполнение подпрограммы в отдельном процессе, одновременное выполнение двух подпрограмм?
  #14

Не по теме:

Цитата Сообщение от Garry Galler Посмотреть сообщение
вопрос по ней или чему-то другому?
- именно по ней. <# - этот символ является комментарием в PS, как он тут работает и как раз
Цитата Сообщение от Garry Galler Посмотреть сообщение
уже ведь не раз здесь приводились
я нераз ее убирал и использовал просто команду в одну строку напрямую вставляя в Bat после powershell "...", вот поэтому и думал что получится. А первую строку шапки использую для запуска скриптов .ps1.

0
01.12.2015, 00:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2015, 00:02
Привет! Вот еще темы с ответами:

Одновременное выполнение двух функций
Как мне заставить картинку и передвигаться и менять размер,а то одновременно...

Одновременное выполнение двух операторов
Здравствуйте, подскажите, как сделать так чтобы два или более операторов...

Как в cron запретить одновременное выполнение двух заданий?
(Если тему не там создал, то перенесите) Есть скрипт, он выполняется каждые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru