W I T H ============= 1988 by Fridtjof Siebert. Nobileweg 67 7000 Stuttgart-40 Was? `WITH' ist ein leistungsstarker CLI-Befehl, der es leicht ermöglicht, beliebige CLI Befehle auf alle Dateien anzuwenden, die zu einem Namensmuster, wie z.B. "#?.mod", passen. Arp? Um WITH nicht unnötig lang zu machen (indem ich InOut, Arguments etc. importier'), benutzt WITH Routinen der arp.library. Wer ARP noch nicht installiert hat, sollte sich also die arp.library in sein LIBS: Directory kopieren. Wie? Usage: WITH [TO File] [ALL] [DIRS] [FILES] [SHOW] Werden falsche Argumente übergeben, gibt WITH die Usage aus. Muster: Ein ist ein beliebiges, das von ARP interpretiert werden kann, wie z.B. *.in?o. Commando: Commando kann irgendein CLI Befehl sein, oder auch mehrere Befehle mit Optionen. Die Stellen, an denen der Filename eingesetzt werden soll, werden durch "$" gekennzeichnet. Es können auch mehrere Commandos angegeben werden. Sie müssen dann durch Strichpunkte, wie in Modula, von einander getrennt werden. Bei manchen Shells darf in der Argumentliste keine '$' vorkommen. In diesem Fall funktioniert jedoch meistens '\$' oder '$$'. TO File: Optional kann hier wie bei "TYPE x TO prt:" eine Ausgabedatei angegeben werden, in der die Ausgaben von Commando landen. ALL: Bewirkt, daß alle Commando auch mit allen Files als Argument gestartet wird, die in Unterdirectories der mit dem Dateimuster angegebenen Directories stehen. DIRS,FILES: DIRS und FILES bewirken, daß das Programm nur Directories bzw. nur Files, die auf das Muster passen, berücksichtigt. Wird weder DIRS noch FILES angegeben, so wird das Commando sowohl mit Directories, als auch mit Dateien gestartet. SHOW: Ist diese Option gesetzt, wird vor der Ausführung das Commando mit den eingestzten Filenamen ausgegeben. Somit kann man bei Befehlen, die nichts aussgeben, wie z.B. DEL und COPY, das Geschehen verfolgen. With kann jederzeit durch ^D, ^E oder ^F abgebrochen werden. Wiese ^C nicht funktioniert weiß' ich nicht genau. Ich nehm' an, das liegt an Arts. Häh? Da den Befehl jetzt bestimmt noch niemand verstanden hat, hier ein paar Beispiele: WITH *.mod TYPE Gibt alle Dateien, die auf ".mod" enden, aus. WITH * LIST DIRS Listet alle Directories im aktuellen Verzeichnis. WITH DF0: LIST ALL DIRS TO Directory Macht in etwa das gleiche wie "DIR >Directory DF0: OPT A", nur mit LIST. WITH DF0: "COPY $ TO RAM:" ALL FILES SHOW Kopiert alle Dateien aus allen Directories von DF0: in das Root-Directory der Ramdisk. Dabei werden die ausgeführten Befehle jeweils angezeigt. WITH DF0:Texte/* "COPY Icons:Text.info $.info" FILES Versieht alle Dateien in DF0:Texte mit dem Icon Icons:Text.info. WITH DF0:* "RENAME $ AS $.txt" ALL FILES Hängt an alle Dateien in DF0: die Endung ".txt". WITH *.def "ECHO File $:; TYPE $" Dies ist schon etwas komplizierter. Der Strichpunkt sorgt dafür, daß die beiden Befehle "ECHO" und "TYPE" getrennt ausgeführt werden. Zunächst gibt ECHO also "File " gefolgt von dem Filenamen und einem Doppelpunkt aus. Danach wird das entsprechende File von TYPE ausgegeben. Das Ergebnis könnte also in etwa so aussehen: File: Grafik.def: DEFINITION MODULE Grafik; ... END Grafik. File: Sound.def: DEFINITION MODULE Sound; ... END Sound. Done. Ich hatte letztens das Problem, die lauter Directories mit M2-Projekten enthielt, die sym-, obj- und ref-Directories zu löschen, um Platz zu schaffen. Ohne WITH wäre das sehr mühselig gewesen. Mit With geht es ganz einfach: WITH df0:*/??? "del $ all; del $.info" dirs Diese eine Zeile sucht nach directories mit 3 Buchstaben und löscht diese und ihre Icons. WITH funktioniert auch mit beliebigen anderen Utilities und Commandos, die keine Filemuster erlauben. Copyright: WITH ist Public Domain. Es darf von jedem umsonst, aber nicht kommerziell, genutzt werden. Nur BCPL Programmierer dürfe WITH nicht benutzen! Spenden, Briefe, Änderungsvorschläge sind immer willkommen. Viel Spaß! --- Fridtjof.