Buscar..


Introducción

Este tema se centrará en los errores causados ​​por los errores del procesador. Estas son las cosas en las que nos centraríamos en la causa y la solución del problema.

Observaciones

En el ejemplo de la Extensión de archivo DEL , el usuario X. Liu advierte que este error no se producirá cuando la extensión del archivo en el comando DEL sea ​​inferior a 3 caracteres.

Confusión de paréntesis

Desde este sitio web, el OP ha notado un problema.


Porque

Considere el siguiente fragmento de código.

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

A primera vista, puede pensar que CMD.exe lo procesaría así:

  • La condición es verdadera, ejecute el bloque de código.
  • Establecer el valor del resultado variable a 14
  • Continuar

Sin embargo, el proceso CMD.exe es así:

  • La condición es verdadera, ejecute el bloque de código.
  • Calcule 2*(3+4 , el ) después de que 4 se procese al final de if bloque de código
  • Un azar ) ha aparecido!

El segundo paso devolvería un error de Unbalanced parentheses .


Solución

De acuerdo con un set /? de CMD.exe alemán set /? , tendríamos que citar operaciones aritméticas. Aquí hay un ejemplo.

Anterior Resultado
set /a result=2+5*4 set /a result="2+5*4"

Por cierto, de acuerdo con un set /? CMD.exe en inglés set /? , se requieren comillas si los operadores lógicos o de módulo están presentes en la expresión (aunque esto no es un paso obligatorio ).

Personaje de escape inadecuado

En esta pregunta de desbordamiento de pila , el usuario txtechhelp encontró un problema con el carácter ^ que podría causar un problema de seguridad.


Porque

anyInvaildCommand ^

Nota: ¡Asegúrate de que el caret ( ^ ) sea el último carácter! ¡Cualquier CR\LF adicional no funcionará en absoluto!

El caret busca al siguiente personaje para escapar. Sin embargo, ya no hay más personajes disponibles para escapar, por lo que cmd recorre infinitamente, buscando un personaje para escapar. En este proceso de "bucle", cmd.exe consumirá la memoria de su computadora. Y poco a poco devorando toda la memoria, llevando la computadora a las rodillas.

Este problema puede llevar a preocupaciones de seguridad más graves, ya que uno podría ingresar el código en la computadora desbloqueada.

Soluciones

  • Usar la página de códigos UTF-16 podría resolver este problema. Solo UTF-8 o ASCII causaría el error.

  • Asegúrese de que haya un CR\LF adicional en el archivo, o simplemente no use caret al final del archivo.

Extra

Este error parece estar resuelto en Windows 10.

Extensión de archivo DEL

Este error fue informado por steve2916 desde este hilo del Foro de Microsoft Windows.


Porque

Considere una carpeta con tales archivos.

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

Si queremos eliminar todos los archivos .doc en este directorio, generalmente haríamos:

del *.doc

Sin embargo, este comando también elimina los archivos .docx . Lo mismo sucede en las extensiones de archivo con este patrón.

Presentar un Archivo b
Cualquier nombre. a B C Otro nombre. abc d

Como podemos ver, siempre que la cadena de extensión de archivo contenga la cadena utilizada en el comando del , se eliminará el archivo. Tenga en cuenta que este error solo se produce cuando la cadena de extensión utilizada en el comando del tiene al menos tres caracteres. Por ejemplo, del *.do no elimina A.doc o A.docx .

Solución

En el hilo, el usuario MicroCompsUnltd notó que el uso de Powershell resolvería el problema.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow