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 des if -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.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow