投稿全体が関連しているので、投稿全体をお読みください。
私はこのC#コードを書きました:
static void DumpDir(string dir)
{
string[] subdirs = Directory.GetDirectories(dir);
foreach (string subdir in subdirs)
{
DumpDir(subdir);
}
string[] files = Directory.GetFiles(dir);
}
static void Main(string[] args)
{
string startdir = @"G:\multimedia_dump";
dirindexstart = startdir.Split('\\').Length;
string[] dirs = Directory.GetDirectories(startdir);
foreach (string dir in dirs)
{
DumpDir(dir);
}
}
ハードコードされたディレクトリを開き、そのすべてのサブディレクトリを再帰的にループします。それがすべてです。それでおしまい。
ただし、特定のフォルダでエラーが発生します。
これが初期ディレクトリではないことに注意してください。コードに従う場合は、Directory.GetDirectories()呼び出しの1つから論理的に派生する必要があることに注意してください。このフォルダ名は適切に生成されていません。本物だ。
それは本物であるだけでなく、エクスプローラーのGUIでナビゲートできます。
奇妙なことに、CMDでフォルダーに移動すると、DIRに表示されますが、フォルダー名の候補が表示されるまでTabキーを押すと、CDを挿入できません。3つ目のリンクを投稿しますが、私は新しいので、これでは許可されません。
何が得られますか?このフォルダを生成したソフトウェアは、ある種の低レベルのNTFS呼び出しを使用して生成したと思います。これらのフォルダー名をプログラムでサニタイズする方法、またはこのエラーを回避して、存在するがアクセスすべきではないフォルダーにアクセスできるようにする方法はありますか?