40oz Posted June 9, 2014 As someone who is just recently opening my eyes to working with batch files, I've been working on a few to simplify many of the tasks I do by hand. I'm a beginner (I pretty much learned all of this today) so forgive me if this is really sloppy. But I'm looking for ways I can condense these tasks so that I don't need to type as much every time. I want to record a demo with prboom, say WOS.WAD map05. But I also want it to: 1. Generate another batch which I can run to playback the demo (testdemo.bat) The "-geom" bit is because I record demos on a different computer than I watch demos on, so I change the resolution. 2. Add a line to my list of "demos to watch" batch (doomtv.bat) 3. Since I only need to do #1 and #2 once, create a new batch file with those two parts omitted, in case I fail the recording and need to re-record. Since I have to modify bits and pieces of these giant lines every time I want to change something, like the map number, the skill, the wad, etc., am I able to somehow turn many of these things in the first line into variables or something, and plug them into to the subsequent lines so whenever I change the first line, it will know to change the subsequent lines too? \DOOM\PRBOOM\prboom-plus.exe -iwad "\DOOM\WADS\IWADS\doom2.wad" -file "\DOOM\WADS\PWADS\idgames\doom2\megawads\wos.wad" -skill 4 -complevel 2 -warp 05 -record "\DOOM\WADS\DEMOS\DOOMTV_wos_05.lmp" ECHO \DOOM\PRBOOM\prboom-plus.exe -iwad "\DOOM\WADS\IWADS\doom2.wad" -file "\DOOM\WADS\PWADS\idgames\doom2\megawads\wos.wad" -playdemo "\DOOM\WADS\DEMOS\DOOMTV_wos_05.lmp" -geom 1366x768f >testdemo.bat ECHO \DOOM\PRBOOM\prboom-plus.exe -iwad "\DOOM\WADS\IWADS\doom2.wad" -file "\DOOM\WADS\PWADS\idgames\doom2\megawads\wos.wad" -playdemo "\DOOM\WADS\DEMOS\DOOMTV_wos_05.lmp" -geom 1366x768f >>doomtv.bat ECHO \DOOM\PRBOOM\prboom-plus.exe -iwad "\DOOM\WADS\IWADS\doom2.wad" -file "\DOOM\WADS\PWADS\idgames\doom2\megawads\wos.wad" -skill 4 -complevel 2 -warp 05 -record "\DOOM\WADS\DEMOS\DOOMTV_wos_05.lmp" >record.bat 0 Share this post Link to post
Maes Posted June 9, 2014 Well, since you admitted to being a beginner and only having started today, why don't you perservere a bit along the path of using variables/command line parameters? I'm sure you'll understand what to do, sooner or later. Also, do you need to actually generate more "child" .bat files whenever you run a "parent" or "master" file? This can be done if you use output redirection, but you'll also need to handle those long commands as strings...in general the DOS/Windows batch language is much less flexible than what is available on Linux/Unix when it comes to such tasks, but it can be used just as well, only not as elegantly. In this particular case, I'd probably find it faster to write a small program in C that generates the desired batch files, rather than go through a .BAT crash course and re-learn all the rules, restrictions ane exceptions, but that's your call. 0 Share this post Link to post
40oz Posted June 9, 2014 I did manage to find help by google searching for variables. After a little bit of trial and error I managed to nail it. set sourceport=\DOOM\PRBOOM\prboom-plus.exe set iwad="\DOOM\WADS\IWADS\DOOM2.wad" set pwad1="\DOOM\WADS\PWADS\idgames\doom2\megawads\wos.wad" set pwad2= set pwad3= set pwad4= set skill=4 set complevel=2 set map=05 set demolump="\DOOM\WADS\DEMOS\DOOMTV_wos_05.lmp" ECHO %sourceport% -iwad %iwad% -file %pwad1% %pwad2% %pwad3% %pwad4% -skill %skill% -complevel %complevel% -warp %map% -record %demolump% >record.bat ECHO %sourceport% -iwad %iwad% -file %pwad1% %pwad2% %pwad3% %pwad4% -playdemo %demolump% -geom 1366x768f >>doomtv.bat ECHO %sourceport% -iwad %iwad% -file %pwad1% %pwad2% %pwad3% %pwad4% -playdemo %demolump% -geom 1366x768f >testdemo.bat %sourceport% -iwad %iwad% -file %pwad1% %pwad2% %pwad3% %pwad4% -skill %skill% -complevel %complevel% -warp %map% -record %demolump% I also managed to find a batch file someone made that shuffles lines in a text file, so by just running it, it will shuffle all the demo lumps in my "demos to watch" playlist in random order :) 0 Share this post Link to post
Maes Posted June 9, 2014 You nailed it indeed. I wish I had supervised students half as smart as that in the freshman computer labs, being able to go from straight commands to a fully parametrized program in a single lesson, and on their own. Now, as an exercise for the reader, make some of those parameters being read from the command line, and some being optional/having default values if not provided ;-) 0 Share this post Link to post