-
-
Save rocketnia/576688 to your computer and use it in GitHub Desktop.
| @echo off | |
| rem 2010, 2013 Ross Angle. Released under the CC0 license. | |
| rem Lines beginning with "rem", like this one, are comments. | |
| rem The "@echo off" line above stops the following commands, | |
| rem including these comments, from being displayed to the terminal | |
| rem window. For a more transparent view of what this batch file is | |
| rem doing, you can take out that line. | |
| rem The @ at the beginning of "@echo off" causes that command to be | |
| rem invisible too. | |
| rem Now we'll keep track of ".", which is the current working | |
| rem directory, and return to that directory later on using "popd". | |
| rem This is mostly useful if we're running this batch file as part of | |
| rem a longer terminal session, so that when we exit Arc and return to | |
| rem the command prompt we're in the same directory we left. | |
| pushd . | |
| rem Now we change the working directory to the Arc directory, so that | |
| rem when we're using Arc, our (load "...") statements will find files | |
| rem from that directory. More importantly, Arc itself also uses some | |
| rem (load "...") statements internally, which won't work if the | |
| rem working directory is wrong. | |
| rem This is the path to the Arc directory on my system. You'll | |
| rem probably need to change this. If your path has any spaces in it | |
| rem (like "C:\Documents and Settings\Your Name\Desktop\arc3.1"), | |
| rem you'll need to put quotes around the path. | |
| rem If the directory you're trying to refer to here is the same as | |
| rem the directory this .bat file lives in, you can use this command | |
| rem instead: | |
| rem cd "%~dp0" | |
| cd C:\proj\tools\languages\arc\arc3.1 | |
| rem Now for the command you've been waiting for. :-p This runs Racket | |
| rem from a specific place on my system--in fact, the place Racket | |
| rem installs itself by default on Windows. The "Racket" utility is | |
| rem the same as what previous versions of Racket (PLT Scheme) called | |
| rem "MzScheme", so keep that in mind if you need to change this path | |
| rem to accommodate your installation. | |
| rem Since we're running Racket from a specific file path, it doesn't | |
| rem matter whether it's actually possible to say "Racket -f as.scm". | |
| rem That's basically just a shortcut syntax that searches the | |
| rem directories listed in the PATH environment variable for any | |
| rem executable named "Racket". As for changing that variable... well, | |
| rem I'll just assume you don't care for now, 'cause that saves me the | |
| rem effort of explaining how not to mess up the PATH. :-p | |
| rem The -f option here means that we're loading a file. I'm using | |
| rem Racket 5.0.1, and if I were to add the -m ("main") option, as | |
| rem seen on http://www.arclanguage.org/install, it would cause an | |
| rem error because Arc doesn't actually define a "main" function. | |
| "C:\Program Files\Racket\Racket" -f as.scm | |
| rem Here's the command for an MzScheme 352 setup I have on my system. | |
| rem I'm using the -m option here, as recommended, because a "Welcome | |
| rem to MzScheme" message is displayed if I leave it out. | |
| rem "C:\proj\tools\languages\racket\plt-352\MzScheme" -m -f as.scm | |
| rem The "pause" command displays a "press any key" message. If Racket | |
| rem exits with an error, this command keeps the batch script running | |
| rem long enough for you to read the error message. (Double-clicking a | |
| rem batch file opens a window that closes once the script is | |
| rem complete.) | |
| pause | |
| rem Finally, as planned, we restore the working directory we started | |
| rem with. | |
| popd |
Rather than using cd C:\proj\tools\languages\arc\arc3.1 you can instead use cd "%~dp0" which will move into the directory that the .bat script is located. That way you don't need to change paths depending on where the user installed Arc.
Thanks! I've made a note of that in the code.
Personally, I don't put these .bat files in my Arc directories, but the use of %~dp0 could easily come in handy for someone else, and I'll keep it in mind the next time I make files like these.
I've also mentioned the CC0 license so it's easier to include this file in other projects like you have. I consider it silly to assign attribution to this code since it's so simple and common, but the comments are substantial, so I figure I should license this explicitly after all.
This is in response to an Arc Forum thread at http://arclanguage.org/item?id=12389.