Direkt zum Inhalt

Windows-Skripterstellung – Take Command und CMD-Sprachgrundlagen

Take Command bietet eine umfangreiche Befehlssprache in seinem Befehlsprozessor (TCC.EXE), die hochgradig aufwärtskompatibel mit dem standardmäßigen Windows-Befehlsprozessor CMD.EXE ist (und diesen ersetzt). Es eignet sich sowohl für die Erstellung einfacher als auch anspruchsvoller Batch-Programme. Die Sprache kann auch an der Eingabeaufforderung verwendet werden, um eine sehr leistungsstarke Echtzeitmanipulation Ihres Computers zu ermöglichen.

Überblick

TCC verfügt über ein riesiges Spektrum an Fähigkeiten. Diese Funktionen sind in drei Kategorien unterteilt:

 Interne Befehle - Dies sind die primären Sprachkonstrukte. Zu den gängigen Befehlen gehören DIR, COPY, MOVE usw. TCC bietet Ihnen sofortigen Zugriff auf mehr als 265 interne Befehle. (CMD.EXE von Microsoft verfügt über etwa 40 interne Befehle.)

Interne vs. externe Befehle

Wenn wir von einem internen Befehl sprechen, meinen wir, dass der Befehl in den integriert ist Take Command Programm. Bei CMD sind einige Befehle, wie z. B. XCOPY, tatsächlich separate Programme. In PowerShell handelt es sich bei den Befehlen im Allgemeinen um externe Programme. PowerShell erfordert die Installation eines separaten .NET Frameworks auf dem Computer, damit die Befehle funktionieren.

 Interne Variable - Interne Variablen sind spezielle integrierte Variablen TCC um Informationen über Ihr System bereitzustellen. Sie werden nicht in der Umgebung gespeichert, können aber wie Umgebungsvariablen in interaktiven Befehlen, Aliasnamen und Batchdateien aufgerufen werden. Take Command stellt mehr als 340 interne Variablen bereit, die Ihnen viel über Ihren Computer und seine Funktionsweise verraten können. Dazu gehören installierte Hardware, Hardwarestatus, Betriebssystem- und Softwarestatus usw.

 Variable Funktionen - Variablenfunktionen sind internen Variablen sehr ähnlich, sie benötigen jedoch einen oder mehrere Parameter (bei denen es sich um Umgebungsvariablen oder sogar andere Variablenfunktionen handeln kann). Variablenfunktionen sind an der Eingabeaufforderung sowie in Alias- und Batchdateien nützlich, um verfügbare Systemressourcen zu überprüfen, Zeichenfolgen und Zahlen zu bearbeiten und mit Dateien und Dateinamen zu arbeiten. Es sind mehr als 440 variable Funktionen integriert TCC.

Wir werden nicht über alle Funktionen des sprechen TCC Sprache in diesem Tutorial. (Das Handbuch ist 1,300 Seiten lang!) Wir gehen davon aus, dass Sie die Grundlagen von CMD kennen und weisen Sie auf einige Dinge hin, die Sie benötigen TCC ist mit weniger Aufwand besser als CMD.

Interne Befehle

Es gibt mehrere Aspekte von TCCs interner Befehlssatz, der auf jeden Fall einen Blick wert ist:

 Switches

 Aliases

 HTTP(S) und FTP(S)

 Fluss von Steuerbefehlen

 KEYSTACK-Befehl

 Ereignisüberwachungsbefehle (Trigger) – Wir haben daraus ein separates Tutorial gemacht

Jedes davon wird im Folgenden behandelt:

1. Switches

Schalter modifizieren Befehle, indem sie ihnen spezielle Anweisungen geben. TCC verfügt über eine Obermenge der CMD-Schalter und beträgt nahezu 100 %. Wir sagen fast, denn leider war CMD von Version zu Version nicht konsistent.

In CMD verfügt der COPY-Befehl beispielsweise über 7 Schalter (XCOPY hat mehr). Der TCC Der COPY-Befehl verfügt über 40 Schalter. Beispiele für einige der Schalter, die der Befehl CMD COPY nicht hat, sind:

 /N Führt den Kopierbefehl aus und zeigt Ihnen die Ausgabe an, führt den Befehl jedoch nicht tatsächlich aus

 /O Kopieren Sie die Quelldatei nur, wenn das Ziel nicht vorhanden ist

 /S Kopieren Sie den Unterverzeichnisbaum, beginnend mit den Dateien im Quellverzeichnis und jedem Unterverzeichnis

 /H Kopieren Sie alle übereinstimmenden Dateien, einschließlich derjenigen mit einem versteckten oder Systemattributsatz

 /W Löschen Sie Dateien im Zielverzeichnis, die im Quellverzeichnis nicht vorhanden sind

Mit diesen Schaltern können Sie die Sprache auf eine Weise individuell anpassen, die mit CMD nicht möglich ist. Sie führen sehr leistungsstarke Operationen mit nur zwei oder drei Tastenanschlägen aus.

2. Aliases

Wir haben Ihnen also all diese leistungsstarken Schalter gegeben, aber vielleicht möchten Sie sie nicht immer eingeben müssen.

Vielleicht haben Sie einige gemeinsame Vorgehensweisen und möchten TCC Dinge so anzupassen, wie man sie machen möchte.

Wir haben eine Lösung ... Aliase. Ein Großteil der Macht von TCC wird in Aliasnamen zusammengefasst, die Ihnen die Möglichkeit geben, Ihre eigenen Befehle zu erstellen. Ein Alias ​​ist ein Name, den Sie für einen Befehl oder eine Befehlsgruppe auswählen.

Einfache Aliase ersetzen einen neuen Namen für einen vorhandenen Befehl. Komplexere Aliase können die Standardeinstellungen interner oder externer Befehle neu definieren, als sehr schnelle Batchdateien im Speicher fungieren und Befehle basierend auf den Ergebnissen anderer Befehle ausführen. TCC unterstützt auch Verzeichnisaliase, eine Kurzform zur Angabe von Pfadnamen.

Aliase können auch benutzerdefinierte Versionen von Befehlen erstellen. Beispielsweise kann der DIR-Befehl ein Verzeichnis auf verschiedene Arten sortieren. Sie können einen Alias ​​namens DE erstellen, der „Verzeichnis nach Dateinamen sortieren“ bedeutet

Alias ​​de=dir /oe /p

Erweiterung und pausieren Sie nach jeder Seite, während sie angezeigt wird“ wie folgt:

Sie müssen sich also nicht alle diese Schalter merken. Sie können Versionen der Sprache einrichten, die Ihren Anforderungen entsprechen. Sie können beispielsweise Aliase erstellen, die mit gängigen Linux-Shell-Befehlen übereinstimmen und auf die gleiche Weise funktionieren, wenn das für Sie bequemer ist.

TCC Aliasing unterscheidet sich in einigen wesentlichen Punkten von CMD (und seinem externen DOSKEY).

• Sie können Aliase in Batchdateien verwenden. DOSKEY-Makros können in Ihren Batchdateien nicht verwendet werden.

 TCC Aliase können eine Variablenerweiterung enthalten, die in DOSKEY nicht verfügbar ist. In diesem Beispiel wird ein einfacher Befehlszeilenrechner erstellt.

alias calc=`echo Die Antwort ist: %@eval[%$]

Sobald Sie das Beispiel eingegeben haben, können Sie beispielsweise CALC 4*19 eingeben und schon sehen Sie die Antwort. Die variable Funktion %@eval[%$] wird vom Parser ausgewertet. Der Text „4*19“ ersetzt den Platzhalter „$“ und die Variablenfunktion @eval welches mathematische Funktionen ausführt, berechnet das Ergebnis.

• Sie können einem Tastendruck einen häufig verwendeten Alias ​​zuweisen. Zum Beispiel:

alias @Shift-F5=*dir /2/S

Nachdem Sie dieses Beispiel eingegeben haben, sehen Sie ein zweispaltiges Verzeichnis mit Paging, wann immer Sie Umschalt-F2 und anschließend die Eingabetaste drücken.

 TCC erlaubt auch Verzeichnis-Aliase. Verzeichnis-Aliase sind eine Kurzform zur Angabe von Pfadnamen. Wenn Sie beispielsweise einen Alias ​​definieren:

Alias ​​pf:=c:\Programme

Sie können dann auf die Dateien in c:\Programme\jpsoft verweisen, indem Sie pf:\jpsoft eingeben.

3. Fluss von Steuerbefehlen

Einer der schwächsten Bereiche von CMD ist der Kontrollfluss. Dies sind Konstrukte wie IF..THEN..ELSE oder DO LOOPS, mit denen Sie anspruchsvolle Batch-Programme entwickeln können. Wenn Sie Batch-Prozesse im Rechenzentrum erstellen, hindern Sie die Einschränkungen in CMD daran, anspruchsvollere Arbeiten durchzuführen.

TCC bietet einen sehr umfangreichen Satz von Konstrukten, mit denen Sie die Fähigkeiten der typischen Linux-Shells duplizieren (oder übertreffen!) können.

Die folgenden Beispiele zeigen einige der Arten von DO-Schleifen, die Sie erstellen können:

Machen Sie Schleifen

Zählen Sie

Tun Sie es für immer

DO varname = start TO end [BY step]

DO WHILE-Bedingung

DO-BIS-Bedingung

TUN BIS DATETIME Datum Uhrzeit

DO FOR n [SECONDS | MINUTEN | STD]

DO varname IN [range...] [/I:"text" /S[n] /A:[-|+]hsad] Dateisatz

DO varname IN [/T"delimiters"] /L stringset

DO varname IN /C stringset

Geben Sie den Variablennamen im /P-Befehl ein

DO varname IN @Datei

TCC Bietet außerdem ein sehr leistungsfähiges IF..THEN..ELSE-Konstrukt über den IFF-Befehl.

If...Then...Else-Konstrukte

IFF-Bedingung1 DANN

Befehlssatz1

[ELSEIFF Bedingung2 DANN Befehlssatz2]

...

[ANDERS

Befehlssatz3]

ENDIFF

Der Alias ​​in diesem IFF-Beispiel prüft, ob der Parameter ein Unterverzeichnis ist. Wenn ja, löscht der Alias ​​die Dateien des Unterverzeichnisses und entfernt es (geben Sie dies in eine Zeile ein):

alias prune `iff isdir %1 then & del /s /x /z %1 & else & echo %1 ist kein Verzeichnis! & endiff`

Dieses Beispiel zeigt, wie ein SWITCH-Konstrukt funktioniert. Das Batchdateifragment unten zeigt eine Meldung an, wenn der Benutzer A drückt, eine andere, wenn der Benutzer B oder C drückt, und eine dritte, wenn der Benutzer eine andere Taste drückt:

Konstrukte wechseln

inkey Geben Sie einen Tastendruck ein: %%key

Schalter %key

Fall A

echo Es ist eine Eins

Fall B .oder. C

echo Es ist entweder B oder C

Standard

echo Es ist nichts von A, B oder C

4.KEYSTACK

KEYSTACK nimmt eine Reihe von Tastenanschlägen auf und leitet sie an ein Programm oder einen Befehl weiter, als ob sie über die Tastatur eingegeben würden. (Es gibt kein Äquivalent in CMD.) KEYSTACK wird am häufigsten für Programme verwendet, die aus Batchdateien gestartet werden. Um beispielsweise Word zu starten und das zuletzt bearbeitete Dokument zu öffnen, können Sie den folgenden Befehl verwenden:

Startwort und Keystack /w54 alt-f „1“

Dies führt zu Folgendem:

 Startet Word,

 Der /w-Schalter verursacht eine Verzögerung von etwa drei Sekunden (54 Uhr tickt jeweils etwa 1/18 Sekunde), bis Word gestartet wird.

 Platziert die Tastenkombinationen für Alt-F (Pulldown-Menü Datei) und 1 (zuletzt verwendete Datei öffnen) im Puffer.

Word empfängt diese Tastenanschläge und führt die entsprechenden Aktionen aus. Beachten Sie, dass die beiden Befehle START und KEYSTACK in einer einzigen Befehlszeile ausgegeben werden. Dadurch wird sichergestellt, dass die Tastenanschläge an das Word-Fenster und nicht zurück gesendet werden Take Command.

5. FTP und HTTP

TCCMit den FTP- und HTTP-Befehlen von können Sie http- und FTP-Sites so behandeln, als wären sie lokale Festplatten. Dies ist ein großer Vorteil gegenüber CMD. Im Arbeiten in der Internetweltzeigen wir Ihnen, wie Sie mit diesen Befehlen praktische Fernüberwachungsanwendungen erstellen.

Im einfachsten Fall können Sie so tun, als ob eine FTP- oder HTTP-Site eine lokale Festplatte wäre. Um beispielsweise ein Verzeichnis der FTP-Site von JP Software abzurufen, können Sie diesen Befehl verwenden:

Verzeichnis ftp://ftp.jpsoft.com/*

Das folgende Beispiel zeigt, wie ein FTP-Benutzername und ein FTP-Passwort eingefügt werden:

Verzeichnis ftp://Benutzername:Diese E-Mail-Adresse ist gegen Spambots geschützt. Sie müssen JavaScript aktivieren, damit Sie sie sehen können./meinverzeichnis/*

Sie können Internetseiten für DIR, COPY, MOVE, DEL und andere Befehle referenzieren. Diese Befehle funktionieren auch mit sicheren Versionen von FTP und HTTP.

6. Ereignisüberwachungsbefehle (Trigger)

Eine der leistungsstärksten Funktionen in TCC sind die 8 Ereignisüberwachungsbefehle. Sie ermöglichen es Ihnen, eine Vielzahl von Aktivitäten auf Ihrem Computer zu beobachten und Prozesse in die Tat umzusetzen, um Probleme zu beheben oder darüber zu berichten.

Dies ist ausführlich in beschrieben Verwenden von Triggern in Take Command. Es lohnt sich, es zu lesen.

 

Interne Variablen

Interne Variablen sind spezielle integrierte Variablen TCC um Informationen über Ihr System bereitzustellen. Sie werden nicht in der Umgebung gespeichert, können aber wie Umgebungsvariablen in interaktiven Befehlen, Aliasnamen und Batchdateien aufgerufen werden.

Es gibt mehr als 330 davon (CMD hat weniger als 10). Zu den wichtigsten Variablentypen gehören:

 Hardwarestatus

 Betriebssystem- und Softwarestatus

 Daten und Zeiten

 Laufwerke und Verzeichnisse

 Fehlercodes

 Bildschirm, Farbe und Cursor

 Take Command Status

 Kompatibilität

Hier ist ein einfaches Beispiel für die Verwendung einer gemeinsamen Variablen namens _DOW (Day Of Week):

Wenn „%_DOW“ == „Mon“, rufen Sie c:\cleanup\weekly.bat auf

Dieses Beispiel ruft eine weitere Batchdatei auf, wenn heute Montag ist.

Bevor wir fortfahren...

Eine kurze Anmerkung:

Eines der großen Geheimnisse der Befehlszeile ist das %-Zeichen. Was tut es? Wenn Sie ein %-Zeichen vor einer Variablen oder Funktion sehen, bedeutet dies, dass der Parser die Funktion auswerten und die Variable oder Funktion durch ihren Textwert ersetzen sollte. Im letzten Beispiel wird also %_DOW durch das Ergebnis ersetzt, das in diesem Fall MON, TUE oder was auch immer ist.

Wie wäre es mit etwas mehr Echtzeit, das Sie im Hintergrund ausführen können:

Tun Sie es für immer

if „%_BATTERYPERCENT“ LT 25“ MSGBOX Batterie ist schwach

ENDDO

Dieser Befehl führt eine fortlaufende Überprüfung des Batteriestatus durch und zeigt ein Meldungsfeld an, wenn die Batterieladung zur Neige geht. MSGBOX ist eigentlich ein sehr mächtiger Befehl TCC. Schau es dir in der Hilfedatei an.

Hier ist ein Beispiel, das vor dem Ausführen einer Anwendung prüft, ob genügend Ressourcen frei sind.

wenn %_GDIFREE dann 40 ist

echo Nicht genügend GDI-Ressourcen!

hör auf, sonst

d:\meinverzeichnis\meineapp

endiff

Sehen Sie sich die Liste der internen Variablen nach Kategorie in der Hilfedatei an.

 

Variable Funktionen

Variable Funktionen sind eine der leistungsstärksten Funktionen von TCC. Variablenfunktionen sind internen Variablen sehr ähnlich, sie benötigen jedoch einen oder mehrere Parameter (bei denen es sich um Umgebungsvariablen oder sogar andere Variablenfunktionen handeln kann).

Variablenfunktionen sind an der Eingabeaufforderung sowie in Alias- und Batchdateien nützlich, um verfügbare Systemressourcen zu überprüfen, Zeichenfolgen und Zahlen zu bearbeiten und mit Dateien und Dateinamen zu arbeiten.

Es gibt mehr als 290 Variablenfunktionen, die in 12 Kategorien gruppiert sind. Sie ermöglichen es Ihnen, Systeminformationen auf sehr leistungsstarke Weise zu sammeln und zu bearbeiten. (CMD hat keine variablen Funktionen.) Denken Sie daran ... sie sind alle eingebaut.

 Binäre Puffer

 Daten und Zeiten

 Laufwerke und Geräte

 Dateiinhalt

 Dateinamen

 Dateieigenschaften

 Eingabedialogfelder

 Netzwerkeigenschaften

 Zahlen und Rechnen

 Zeichenfolgen und Zeichen

 Systemstatus

 Dienstprogramm

Mit Funktionen, TCC kann Textdateien sowie einige Spezialdateien wie die Windows-Registrierung oder .ini-Dateien lesen und schreiben. Im folgenden Beispiel lesen wir eine CSV-Datei namens „names.csv“ (eine Textdatei mit durch Kommas getrennten Feldern). Die Datei sieht wie folgt aus:

Joe,100,Diese E-Mail-Adresse ist gegen Spambots geschützt. Sie müssen JavaScript aktivieren, damit Sie sie sehen können.

Jane,200,jane@company.com €XNUMX

Peter,400,peter@company.com €XNUMX

In unserem Beispiel wird diese Datei Zeile für Zeile gelesen und in jeder Zeile die E-Mail-Adresse ausgewählt. Anschließend werden sie an die Konsole zurückgegeben.

kompensieren Dateiname=%@expand[Namen*.csv]

Nehmen Sie auf @%Dateiname

kompensieren email=%@field[",",3,%record] echo %email

beenden

Dieser Code führt Folgendes aus:

 In der ersten Zeile des Beispiels wird mithilfe von eine Variable mit der vollständigen Datei und dem Pfadnamen der CSV-Datei erstellt @expandieren Funktion.

 Die zweite Zeile verwendet einen Sonderfall des DO-Befehls, um:

 Öffnen Sie den Dateinamen, den wir in der ersten Zeile festgelegt haben, mit einem @Dateinamen Funktion

 Erstellen Sie einen Zeilenzähler, der auf eins gesetzt wird

 Richten Sie eine neue Variable mit dem Namen „record“ ein.

 Lesen Sie die erste Textzeile bis zum CR und geben Sie sie an „record“ zurück.

 Das @Feld Die Funktion wählt das dritte Feld in der Zeile (das die E-Mail-Adresse enthält) mit einem „“, als Feldtrennzeichen aus und platziert es in einer Variablen namens „email“. Das Trennzeichen könnte alles sein, was Sie wollen.

 Der ECHO-Befehl gibt die E-Mail-Adresse an die Konsole aus

 ENDDO führt die Schleife zur do-Anweisung zurück, die den Zeilenzähler auf die nächste Zeile erhöht. Wenn es das Ende der Datei ist, wird die Schleife beendet.

Dieses spezielle Beispiel scheint etwas begrenzt zu sein, aber wir verwenden eine Variante davon, um unsere Bestellungen zu verarbeiten, Registrierungsschlüssel zu erstellen und sie mit einer bemerkenswert kleinen Menge Code per E-Mail an unsere Benutzer zu senden.