【C#】何をやっても消せないフォルダ「…」を強制的に消す【現場の備忘録】

プログラム

ある日、修正した処理をビルドしたところ、実行される前にVisual Studio自体が落ちた。

処理落ち?バグ?どちらにせよ、処理を確認しないと話にならない。

だが該当プロジェクトを再起動しようとしても何も起こらない。

Visual Studioが壊れたのか?

別のプロジェクトで確認してみると問題なくVisual Studio起動してプロジェクトが開かれる。

調べてみるとビルドしたプロジェクトの「bin/Debug/net8.0」の中に「…」という名前の謎のフォルダが作成されていた。

消せないフォルダ「…」

謎のフォルダ「…」が作成された原因。

それは相対パスで一つ上の階層に作ろうとして「../」と記載したつもりが勢い余って「…/」とピリオドを余計につけてしまったから。

using System.Text;

Encoding setEncod = Encoding.UTF8;
string path = ".../TEST/";//「.(ピリオド)」が一つ多い

if (!Directory.Exists(path))
{
    Directory.CreateDirectory(path);
}

この処理を実行すると「…」フォルダが作成されてVisual Studioが落ちる。

そして凡ミスで作成されたこの「…」フォルダ、消すことが出来ない。

普通にDeleteしようとしたら

ちなみにこのフォルダーは開くことが出来ないので中身も何にもない。

コマンドプロンプトを管理者として「del」コマンドを実行して親フォルダごと消そうとするも…

一見消せたようですが

「…」フォルダだけ残ってしまっています。

ならばrmdir /s /q」コマンドを…

なるほど…?

リソースモニターで探してみると

動かしているプロセスなんて見つかりません。

PowerShellでもダメ。

改名はそもそも出来ない。

PCを更新しても状況は変わらず。

解決方法

そうだ、Directoryで作成されたのならDirectoryで消せるはず。

string path = @"C:\TestProgram\ConsoleApp1\bin\Debug\net8.0\";
Directory.Delete(path, true);

祈りながら上記処理を実行すると

無事削除できました。

さいごに

コマンドプロンプトでも消せなかったときは一生このフォルダを置いておかないといけないのかと絶望しましたが、何とか解決してよかったです。

にしても「rmdir /s /q」でもダメだったのに、何故Directory.Deleteが通ったのか分からない…。

コメント

タイトルとURLをコピーしました