cmder はパラメータ付きで Contig を実行できません

cmder はパラメータ付きで Contig を実行できません

デフォルトの cmd を cmder に置き換えたいのですが、cmder は HDD 上の頻繁に使用するフォルダーをデフラグするために Contig を実行できません。コマンドはContig.exe -v -s E:\WarThundercmd では問題なく実行されますが、cmder ではヘルプ メニューが表示されるだけです (間違ったパラメーターを解析するなど)。

これをどう修正すればよいでしょうか。どんなアイデアでも歓迎します

答え1

Contig.exe (SysInternal ツールから) には重大なバグがあります。シンボリック リンク (またはディレクトリ ジャンクション) とマウントされたボリュームの存在を検出しません。場合によっては、ターゲット ファイル (または方向ジャンクションのターゲット ディレクトリ) が存在しない可能性があり、その場合は、その範囲を取得できずにクラッシュし、現在のユーザーの Crashdump ディレクトリにダンプが生成されます。

Contig.exe は、デフォルトでは、シンボリック リンクのターゲット、ディレクトリ ジャンクションのターゲット、またはマウント ポイントのターゲットをたどりません。代わりに、リンクまたはジャンクション、またはマウント ポイント自体を分析/デフラグするだけです。

  • シンボリック リンクまたはジャンクションのターゲットを分析/デフラグしたい場合は、そのようなリダイレクトを有効にする追加の「-f」オプションが必要です。このオプションは、デフォルトではオフにする必要があります。
  • マウント ポイントのターゲットを分析/デフラグしたい場合は、それらのアクセスを有効にする追加の「-m」オプションが必要です。このオプションは、デフォルトではオフにする必要があります。
  • 「-f」または「-m」オプションが「-s」(サブディレクトリを再帰する)とともに使用される場合、contig.exe は、各訪問ディレクトリのボリューム ID とファイル ID を保持することによって訪問パスを追跡し、同じノードをさらに再訪問しないようにします(スタック内に既に存在する同じ訪問親ディレクトリでの無限再帰ループを回避するため)。

同様のバグは、ATTRIB.EXE コマンドライン ツール (サブディレクトリを再帰的に参照するために「/S」とともに使用される「/L」オプションを使用) では部分的に解決されましたが、マウント ポイントにマウントされたボリュームがある場合は依然として残ります。ICACLS.exe ツールでは、明らかにこれは正しく処理されています (リンクのターゲットにアクセスすることはなく、リンク自体のみにアクセスします)。ただし、マウント ポイント (VHDX 内の別のボリューム、または現在のボリュームの別のディレクトリ) では依然として問題があります。

このようなバグは、他のツール、特にバックアップ/復元ツールに影響します (Windows 8/8.1/10/11 にまだ存在する従来の「Windows 7」バックアップも含まれ、ファイルベースのバックアップを正しく正常に作成できない可能性があります。これには、ユーザー プロファイルにデフォルトで存在するが、従来の「隠し」属性でマークされているだけのさまざまなシンボリック リンクやジャンクション、またはバックアップ/復元しないサブディレクトリのリストから明示的に除外されていない場合が含まれます)。

Windows は、シンボリック リンク (NTFS の「ディレクトリ ジャンクション」を含む) の完全かつ効果的な正しいサポートについて、まだ十分にテストされていません。ハード リンク (NTFS で同じボリューム上のファイル/ディレクトリ間でサポート) も、無限再帰が発生する可能性がある場合に問題になることがあります。Windows は、多くの場所で、ファイルまたはディレクトリに一意のパスからのみアクセスできる従来の FAT ファイル システムの動作を依然として想定しています。ただし、シンボリック リンクとマウント ポイント (ディレクトリ用) は、非常に古くから存在していることを思い出してください (Windows の最初の 16 ビット リリースよりずっと前から、IBM-DOS、MS-DOS、DR-DOS、およびさまざまな DOS エクステンダー内、マウントされた FAT ボリュームまたはマウントされたネットワーク ボリュームに存在していました)。

Contig.exe のこのようなバグ (および一部の管理者権限と、同意ダイアログをポップアップ表示する内部の「ライセンス チェック」) により、「cmder」が Contig.exe の使用を拒否する可能性があります (これは純粋なコマンド ライン ツールではなく、標準の I/O ストリームだけでなく Windows デスクトップも使用できる必要があります)

関連情報