Discussion forum for all Windows batch related topics.
Moderator: DosItHelp
-
Blitz
- Posts: 2
- Joined: 09 Oct 2021 15:23
#1
Post
by Blitz » 09 Oct 2021 16:15
I hope this trick can help anyone
1.bat
Code: Select all
@echo off
for /l %%a in (1,1,10) do echo=%%a
2.bat
Code: Select all
@echo off
for /l %%a in (1,1,15) do echo=%%a
Parallel.bat
Code: Select all
@echo off
(for /f "delims=" %%a in ('1') do @echo=%%a&ping 127.1 -n 1 >nul)|cmd /v /c "(for /f "delims=" %%b in ('2') do @(set/pa=&&echo=!a! %%b||echo= %%b))&&for /l %%c in (,,,) do @set /pa=&&echo=!a!||exit /b"
pause
-
Aacini
- Expert
- Posts: 1913
- Joined: 06 Dec 2011 22:15
- Location: México City, México
-
Contact:
#2
Post
by Aacini » 09 Oct 2021 21:23
If you say that 1.bat and 2.bat are executed in parallel, then you are wrong. The FOR/F command first run the command and then, after the command had finishef, output the results. 1.bat and 2.bat never run in parallel in this way...
-
Blitz
- Posts: 2
- Joined: 09 Oct 2021 15:23
#3
Post
by Blitz » 10 Oct 2021 02:59
Yes, I know, I mean their output can be side by side and there is no need for temporary files or setting variables
-
aGerman
- Expert
- Posts: 4678
- Joined: 22 Jan 2010 18:01
- Location: Germany
#4
Post
by aGerman » 10 Oct 2021 04:34
I'm not even sure if this works reliably. Looks rather like some kind of UB. What happens if you decelerate one of the output loops? E.g. in 2.bat
Code: Select all
@echo off
for /l %%a in (1,1,15) do ping 127.1 -n 2 >nul&echo=%%a
Steffen