File- und Skripting-Tricks mit dem ACMP AutoMATE

theogott
Beiträge: 15
Registriert: So Feb 27, 2011 3:29 pm

File- und Skripting-Tricks mit dem ACMP AutoMATE

Beitragvon theogott » Mo Apr 18, 2011 2:42 pm

Hier folgen ein paar kleine Codeschnipsel, die dem Einsteiger zeigen sollen wie man im Umgang mit Dateien zum Ziel kommt. Es geht um Pfade und Dateinamen.
Egal ob ein Setup einen Link auf dem Desktop hinterläßt den man mal schnell löschen will, oder ob man nach dem automatisierten Setup noch Dateien in den Zielordner kopieren will.

Das geht alles mit einem Skript und dem jeweil richtigen Befehl. Den Befehl, den man aus der großen Anzahl an Möglichkeiten, die der ACMP AutoMATE bietet auch erstmal herausfinden muss.

Einfache Installationen mit dem "InstaRec" Rekorder aufzeichnen - das kann an siche jeder, der auch ein Setup bedienen kann. Aber der Profi muß mehr können. Das ist auch der Grund warum ich empfehle eine Schulung zum AutoMATE zu machen. Nur so kann man schnell alle Möglichkeiten ausschöpfen.

Wie ist das zum Beispiel mit Pfaden. Wer von einem beliebigen Pfad aus nur mal eine Ebene höher will, wie geht das?

Code: Alles auswählen

' Irgendein Pfad, hier der wo das Script selbst liegt VAR\PAT=?pfad ' Eine Ebene höher wechseln ' BLB = "Before Last Backslash" BLB\$$PAT VAR\$$PSA=$v1$ ' CTC = Copy To Clipboard CTC\$v1$
Im Clipboard befindet sich nun der Pfad, eine Verzeichniseben höher, als da wo das Script gerade liegt. Will man das Script als EXE laufen lassen benötigt man statt "?pfad" wie immer "$ev4$":

Code: Alles auswählen

IEX\ ' Wenn das Script als EXE läuft VAR\$$PAT=$ev4$ ELSE ' Wenn das Script im Editor läuft VAR\PAT=?pfad EEX\ BLB\$$PAT VAR\$$PSA=$v1$ CTC\$v1$
Manchmal benötigt man einen Dateinamen mit einer anderen Endung.

Code: Alles auswählen

' Wieder nehmen wir eine konrete Datei (mit oder ohne Pfad) VAR\$$FIC=f:\files\tiefer\Meinfile.pas ' Nun ermitteln wir alles vor dem letzten "." BLC\$$FIC|. VAR\$$FIX=$v1$ ' Und damit können wir nun die anderen Files gleichen Namens, anderer Endung ermitteln ' f:\files\tiefer\Meinfile.log VAR\$$FIN=$$FIX.log ' f:\files\tiefer\Meinfile.inc VAR\$$FIS=$$FIX.inc
Will man im Zuge eines Prozesses warten, bis ein bestimmtes File erscheint, genügt dazu ein Befehl WFF\ (Wait For File).
In Batchfiles sehr nützlich, weil man so alles perfekt absichern kann, gegen Latenzen im Dateisystem.

Code: Alles auswählen

WFF\$$FIN
Und wenn man warten will, bis es sicher gelöscht wurde bzw. nicht mehr da ist, schreibt man eben:

Code: Alles auswählen

' Datei löschen DEL\$$FIN ' Und sicherheitshalber warten bis die Datei wirklich aus allen Puffern weg ist WFF\$$FIN|!
Im Zuge von solchen Batch-Scripten muss man hier und da auch das aktuelle Verzeichnis wechseln, das geht so:

Code: Alles auswählen

VAR\$$PAT=c:\myfolder\ CHD\$$PAT ' Kleine Pause von 150 ms TDL\150
Und letztlich will man ein Commandline-Tool aufrufen, das einen Parameter bekommt.
Sei es was es will:

Code: Alles auswählen

VAR\$$COM=c:\bin\mytool.exe VAR\$$FIC=My parameters /v /x EXE\$$COM|"$$FIC"
Wenn man nun eine Sammlung solche Batch-Scripte hat, und eines ruft ein anderes auf (mit JNF\)
besteht zumindest die Gefahr dass mal eine Variable eines aufgerufenen Unterscriptes eine Variable des aufrufenden Scriptes überschreibt.

Das kann man ganz leicht umgehen, mit VVS\ und VVR\.

Dazu macht man das aufrufende Script so, wie immer:

Code: Alles auswählen

' Das Script: "MySubScript.rem" im gleichen Ordner wird aufgerufen, es werden zwei Parameter an das Script übergeben. VAR\$$TXT=Hallo Franz JNF\MySubScript.rem|Parameter1|Parameter2 ' Es wird "Hallo Franz" ausgegeben. MBX\$$TXT @
Das aufgerufene Unterscript würde zum Beispiel so aussehen:

Code: Alles auswählen

' MySubScript.rem VVS\ VAR\$$TXT=Hallo Peter ' Die Variablen sind alle gesichert, die Parameter sind jedoch alle da. VAR\$$NAM=$$_01 VAR\$$NAN=$$_02 MBX\ Der erste Parameter ist: $$NAM MBX\ Der zweite Parameter ist: $$NAN ' Es wird "Hallo Peter" ausgegeben. MBX\$$TXT VVR\ ' Das @ beschliesst ein Unterprogramm das mit "JNF\" auferufen wird. @

Grundsätzlich kann man einen Pfad ganz einfach zerlegen mit GFT\ (Get File Tokens).
Ein Befehl denn man in dem Zusammenhang kennen sollte.
Mit "GFT\" können Sie einen im Datenteil angegebenen kompletten Dateipfad in die Bestandteile
- Verzeichnis (ohne Backslash am Ende),
- Dateiname (ohne Endung) und
- Endung (sofern es eine gibt)
zerlegen. Die Token werden in Kleinbuchstaben in programminternen Variablen hinterlegt:
$v2$ enthält das Verzeichnis ohne abschließenden Backslash,
$v3$ enthält den reinen Dateinamen ohne Endung,
$v4$ enthält die Endung,
$v5$ enthält das Root-Verzeichnis mit abschließendem Backslash und
$v6$ enthält den reinen Verzeichnisnamen ohne abschließenden Backslash.
Wenn es sich um einen Netzwerkpfad handelt, wird statt des Verzeichnisnamen in
$v6$ der Servername mit abschließendem Backslash geliefert.

Wenn im Datenteil der Name eines (existierenden) Verzeichnisses übergeben wird, bleiben $v3$ und $v4$ leer.
Wenn Sie den Datenteil leer lassen, wird der Inhalt von "$v1$" als Dateipfad benutzt, wie er z.B. von "IEF\" (If Exists File/Folder) belegt wurde.

Beispiel:
DVV\1+
GFT\?remexe
@
Output:
$v2$=e:\wr6-code
$v3$=remote
$v4$=exe
$v5$=e:\
$v6$=wr6-code
Theo Gottwald
Selbständiger IT-Berater

ACMP AutoMATE Professional
Let the Robots do it for you.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast