batch-file
Fehler im cmd.exe-Prozessor
Suche…
Einführung
Dieses Thema konzentriert sich auf Fehler, die durch Prozessorfehler verursacht werden. Hier sind die Dinge, auf die wir uns auf die Ursache und die Lösung des Problems konzentrieren würden.
Bemerkungen
In dem Beispiel DEL File Extension erkennt Benutzer X. Liu, dass dieser Fehler nicht auftritt, wenn die Dateierweiterung im DEL
Befehl weniger als 3 Zeichen umfasst.
Klammern Verwirrung
Auf dieser Website hat das OP ein Problem festgestellt.
Ursache
Betrachten Sie den folgenden Codeausschnitt.
if 1==1 (
set /a result = 2*(3+4)
)
Auf den ersten Blick denken Sie vielleicht, dass CMD.exe
es so verarbeitet:
- Die Bedingung ist wahr, Codeblock ausführen
- Setzen Sie den Wert des Variablenergebnisses auf
14
- Fortsetzen
CMD.exe
verarbeitet jedoch so:
- Die Bedingung ist wahr, Codeblock ausführen
- Berechne
2*(3+4
, die)
nachdem 4 am Ende desif
-Codeblocks verarbeitet wurde - Ein Zufall
)
ist erschienen!
Der zweite Schritt würde einen Unbalanced parentheses
.
Lösung
Laut einem deutschen CMD.exe- set /?
, müssten wir Rechenoperationen zitieren. Hier ist ein Beispiel.
Bisherige | Ergebnis |
---|---|
set /a result=2+5*4 | set /a result="2+5*4" |
Übrigens laut einer englischen CMD.exe set /?
Anführungszeichen sind erforderlich, wenn im Ausdruck logische oder modulartige Operatoren vorhanden sind (dies ist jedoch kein Muss- Schritt).
Unpassender Fluchtcharakter
In dieser Stack Overflow-Frage hat der Benutzer txtechhelp ein Problem mit dem Zeichen ^
, das ein Sicherheitsproblem verursachen kann.
Ursache
anyInvaildCommand ^
Hinweis: Stellen Sie sicher, dass das Caret ( ^
) das letzte Zeichen ist! Jede zusätzliche CR\LF
funktioniert überhaupt nicht!
Das Caret sucht nach dem nächsten zu flüchtenden Charakter. Es stehen jedoch keine Zeichen mehr zur Verfügung, so dass cmd
Loops unendlich cmd
nach einem Zeichen suchen, das entkommen kann. In diesem "Schleifen" -Prozess verbraucht cmd.exe
den Arbeitsspeicher Ihres Computers. Und nach und nach den gesamten Speicher fressen und den Computer in die Knie zwingen.
Dieses Problem kann zu größeren Sicherheitsbedenken führen, da der Code einfach in den nicht gesperrten Computer eingegeben werden kann.
Lösungen
Verwenden Sie die Codepage UTF-16, um dieses Problem zu lösen. Nur UTF-8 oder ASCII würde den Fehler verursachen.
Stellen Sie sicher, dass in der Datei ein zusätzlicher
CR\LF
enthalten ist, oder verwenden Sie einfach keine Einfügemarke am Ende der Datei.
Extra
Dieser Fehler scheint in Windows 10 behoben zu sein.
DEL Dateierweiterung
Dieser Fehler wurde von steve2916 aus diesem Microsoft Windows Forum-Thread gemeldet .
Ursache
Betrachten Sie einen Ordner mit solchen Dateien.
TestA.doc
TestB.doc
TestC.docx
TestD.docx
Wenn wir alle .doc
Dateien in diesem Verzeichnis entfernen möchten, machen wir normalerweise Folgendes:
del *.doc
Mit diesem Befehl werden jedoch auch die .docx
Dateien entfernt. Dasselbe gilt für Dateierweiterungen mit diesem Muster.
Datei A | Datei B |
---|---|
Jeder Name. ABC | Ein anderer Name. abc d |
Wie wir sehen, wird die Datei gelöscht, solange die Dateierweiterungszeichenfolge die im Befehl del
verwendete Zeichenfolge enthält. Beachten Sie, dass dieser Fehler nur auftritt, wenn die im Befehl del
verwendete Erweiterungszeichenfolge mindestens drei Zeichen enthält. Zum Beispiel löscht del *.do
A.doc
oder A.docx
.
Lösung
In dem Thread hat der Benutzer MicroCompsUnltd bemerkt, dass die Verwendung von Powershell
das Problem lösen würde.