Ricerca…


introduzione

Questo argomento si concentrerà sugli errori causati dai bug del processore. Ecco le cose che ci concentreremmo sulla causa e sulla soluzione del problema.

Osservazioni

Nell'esempio DEL File Extension , utente X. Liu nota che questo errore non si verifica quando l'estensione del file nel comando DEL è inferiore a 3 caratteri.

Confusione tra parentesi

Da questo sito web, l'OP ha notato un problema.


Causa

Considera il seguente frammento di codice.

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

A prima vista, potresti pensare che CMD.exe lo elaborerebbe in questo modo:

  • La condizione è vera, esegue il blocco di codice
  • Imposta il valore del risultato variabile su 14
  • Continua

Tuttavia, CMD.exe questo modo:

  • La condizione è vera, esegue il blocco di codice
  • Calcola 2*(3+4 , il ) dopo che 4 viene elaborato alla fine del blocco di codice if
  • A random ) è apparso!

Il secondo passaggio restituirà l'errore di Unbalanced parentheses .


Soluzione

Secondo un set /? di CMD.exe tedesco set /? , dovremmo citare le operazioni aritmetiche. Ecco un esempio.

Precedente Risultato
set /a result=2+5*4 set /a result="2+5*4"

A proposito, secondo un set /? CMD.exe inglese set /? , le virgolette sono obbligatorie se gli operatori logici o di modulo sono presenti nell'espressione (anche se questo non è un passaggio obbligato ).

Carattere di fuga improprio

In questa domanda di overflow dello stack , txtechhelp utente ha riscontrato un problema con il carattere ^ che potrebbe causare un problema di sicurezza.


Causa

anyInvaildCommand ^

Nota: assicurati che il segno di omissione ( ^ ) sia l'ultimo carattere! Qualsiasi CR\LF più non funzionerà affatto!

Il caret cerca il prossimo personaggio di fuggire. Tuttavia, non ci sono più personaggi disponibili per scappare, quindi cmd loop infinitamente, cercando un personaggio da scappare. In questo processo "loop", cmd.exe consumerà la memoria del tuo computer. E gradualmente mangiando tutta la memoria, mettendo il computer in ginocchio.

Questo problema può portare a problemi di sicurezza più seri in quanto uno potrebbe semplicemente inserire il codice nel proprio computer sbloccato.

soluzioni

  • Utilizzare la codepage UTF-16 potrebbe risolvere questo problema. Solo l' UTF-8 o l' ASCII causerebbero l'errore.

  • Assicurati che ci sia un CR\LF in più nel file, o semplicemente non usi il caret alla fine del file.

Extra

Questo bug sembra essere risolto in Windows 10.

Estensione del file DEL

Questo bug è stato segnalato da steve2916 da questa discussione sul forum di Microsoft Windows.


Causa

Considera una cartella con tali file.

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

Se vogliamo rimuovere tutto il file .doc in questa directory, di solito faremmo:

del *.doc

Tuttavia, questo comando rimuove anche i file .docx . Lo stesso accade sulle estensioni di file con questo modello.

File A File B
Qualche nome. abc Un altro nome. abc d

Come possiamo vedere, finché la stringa di estensione del file contiene la stringa utilizzata nel comando del , il file verrà eliminato. Si noti che questo errore si verifica solo quando la stringa di estensione utilizzata nel comando del ha almeno tre caratteri. Ad esempio, del *.do non elimina A.doc o A.docx .

Soluzione

Nel thread, l'utente MicroCompsUnltd ha notato che l'utilizzo di Powershell avrebbe risolto il problema.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow