Sök…


Introduktion

Det här ämnet kommer att fokusera på fel orsakade av processorbuggarna. Här är de saker vi skulle fokusera på orsaken och lösningen på frågan.

Anmärkningar

I exemplet DEL Filtillägg , användar X. Liu upptäcker att detta fel kommer inte uppstår när filändelsen i DEL kommandot är mindre än 3 tecken.

Parentheses förvirring

Från denna webbplats har OP märkt ett problem.


Orsak

Tänk på följande kodavsnitt.

if 1==1 (
    set /a result = 2*(3+4)
)

Vid din första anblick kanske du tror att CMD.exe skulle behandla det så:

  • Villkoret är sant, kör kodblock
  • Ställ in det variabla resultatet till 14
  • Fortsätta

Emellertid bearbetar CMD.exe så:

  • Villkoret är sant, kör kodblock
  • Beräkna 2*(3+4 , ) efter att 4 har bearbetats i slutet av if kodblocket
  • En slumpmässig ) har dykt upp!

Det andra steget returnerar fel i Unbalanced parentheses .


Lösning

Enligt en tysk CMD.exe- set /? , skulle vi behöva citera aritmetiska operationer. Här är ett exempel.

Tidigare Resultat
set /a result=2+5*4 set /a result="2+5*4"

Förresten, enligt en engelsk CMD.exe- set /? , anbud krävs om logiska eller moduloperatörer finns i uttrycket (även om detta inte är ett måste-göra- steg).

Felaktig Escape-karaktär

I denna Stack Overflow-fråga hittade användaren txtechhelp ett problem med ^ -tecknet som kan orsaka ett säkerhetsproblem.


Orsak

anyInvaildCommand ^

Obs: Se till att caret ( ^ ) är det sista tecknet! Eventuella extra CR\LF fungerar inte alls!

Caret letar efter nästa karaktär att fly. Men de är inte fler karaktärer tillgängliga att fly, så cmd slingor oändligt, letar efter en karaktär att fly. I denna "loop" -process konsumerar cmd.exe ditt datorminne. Och gradvis äter allt minne, vilket gör datorn till knäna.

Det här problemet kan leda till allvarligare säkerhetsproblem eftersom man bara kan ange koden i ens låsta dator.

lösningar

  • Använd kodkod UTF-16 kan lösa problemet. Endast UTF-8 eller ASCII orsakar felet.

  • Se till att det finns en extra CR\LF i filen, eller använd helt enkelt inte caret i slutet av filen.

Extra

Det här felet verkar vara löst i Windows 10.

DEL filändelse

Detta fel rapporterades av steve2916 från denna Microsoft Windows Forum-tråd.


Orsak

Överväg en mapp med sådana filer.

TestA.doc
TestB.doc
TestC.docx
TestD.docx

Om vi vill ta bort alla .doc filer i den här katalogen gör vi vanligtvis:

del *.doc

Detta kommando tar dock också bort .docx filerna. Detsamma sker på filändelser med detta mönster.

Fil A Fil B
Något namn. ABC Ett annat namn. abc d

Som vi ser, så länge filändelsesträngen innehåller strängen som används i kommandot del , kommer filen att raderas. Observera att detta fel bara inträffar när den tilläggsträng som används i kommandot del har minst tre tecken. del *.do inte A.doc eller A.docx .

Lösning

I tråden märkte användaren MicroCompsUnltd att användning av Powershell skulle lösa problemet.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow