サーチ…


前書き

このトピックでは、プロセッサのバグによって引き起こされるエラーに焦点を当てます。ここでは、問題の原因と解決策に焦点を当てることがあります。

備考

DELファイル拡張の例では、ユーザーX. Liuは、 DELコマンドのファイル拡張子が3文字未満の場合、このバグは発生しないことに気付きます。

括弧の混乱

このウェブサイトから、OPは問題に気付いています。


原因

次のコードスニペットを考えてみましょう。

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

一見すると、 CMD.exeCMD.exeように処理すると考えるかもしれません:

  • 条件が真であり、コードブロックを実行する
  • 変数結果の値を14設定する
  • 持続する

しかし、 CMD.exeように処理します。

  • 条件が真であり、コードブロックを実行する
  • 計算2*(3+4) 4後はの終わりに処理されるif 、コードブロック
  • ランダム)が登場しました!

2番目の手順では、 Unbalanced parenthesesエラーが返されます。


溶液

ドイツのCMD.exeのset /?に従ってset /?算術演算を引用する必要があります。ここに例があります。

結果
set /a result=2+5*4 set /a result="2+5*4"

ちなみに、英語のCMD.exeによると、 set /?式に論理演算子または係数演算子が含まれている場合は、引用符が必要です(これは必須のステップではありません )。

不適切なエスケープ文字

このスタックオーバーフローの質問では 、ユーザーtxtechhelpが、セキュリティ問題を引き起こす可能性のある^文字の問題を発見しました。


原因

anyInvaildCommand ^

注:キャレット( ^ )が最後の文字であることを確認してください!余分なCR\LFはまったく動作しません!

キャレットは、エスケープする次の文字を探します。しかし、これ以上エスケープできる文字はないので、 cmd無限ループし、エスケープする文字を探します。この "ループ"プロセスでは、 cmd.exeはコンピュータのメモリを消費します。徐々にすべての記憶を食べて、コンピューターをひざまずいてください。

この問題は、ロックされていないコンピュータにコードを入力するだけで、より深刻なセキュリティ上の心配につながる可能性があります。

ソリューション

  • コードページUTF-16を使用するとこの問題を解決できます。 UTF-8またはASCIIのみがバグの原因になります。

  • ファイルに余分なCR\LFがあることを確認するか、単にファイルの末尾にキャレットを使用しないでください。

余分な

このバグはWindows 10で解決されているようです。

DELファイル拡張子

このバグは、このMicrosoft Windowsフォーラムのスレッドからsteve2916によって報告されました


原因

そのようなファイルを含むフォルダを考えてみましょう。

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

このディレクトリ内のすべての.docファイルを削除する場合は、通常は次のようにします。

del *.doc

ただし、このコマンドは.docxファイルも削除します。このパターンのファイル拡張子でも同じことが起こります。

ファイルA ファイルB
Anyname。 abc AnotherName。 abc d

わかるように、ファイル拡張子文字列にdelコマンドで使用された文字列が含まれている限り、ファイルは削除されます。このバグは、 delコマンドで使用される拡張文字列に少なくとも3文字が含まれている場合にのみ発生することに注意してください。たとえば、 del *.doA.docまたはA.docx削除しません。

溶液

スレッドでは、ユーザーMicroCompsUnltdは、使用していることに気づいたPowershell問題を解決するだろう。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow