0

これについて検索を行いましたが、ほとんど喜びはありませんでした。同じバッチファイルでフォルダーを削除しようとしています:

mkdir "%_gameKey%"
:: Stuff.....
rmdir /s /q "%_gameKey%"

「別のプロセスで使用されているため、プロセスはファイルにアクセスできません」というエラーが表示されます。また、右クリックして削除してもフォルダーを削除できません-同じエラーです。興味深いことに、rmdir はフォルダーの内容を削除します。フォルダには何もありません。また、明らかにアクセスできるものもありません。

Unlocker を使用しました - プロセスが表示されません。Process Explorer も使用し、フォルダー名 (フル パスあり/なし) で検索しました - 検索結果はありません。

マシンを再起動すると、削除できます。ユーザー権限まであるかどうかはわかりません。このことから、ユーザーは完全な制御ではなく読み取り/書き込みのみを持っていることがわかります。(申し訳ありませんが、ユーザー権限に関してはあまり良くありません - 特に Windows では!)。ただし、再起動時に削除できるため、確かにこれはできません。

フォルダは非 OS ドライブにあります。

私は困惑しています - 何かアイデアはありますか?

4

3 に答える 3

3

アプリケーションが現在このフォルダーを作業ディレクトリとして使用している場合、Windows でフォルダーを削除することはできません。

あなたの場合、バッチファイルはコマンドcdを使用して作業ディレクトリを作成されたディレクトリに変更すると思います。そのため、コマンドを使用してこのディレクトリを削除するcd前に、もう一度使用して別の作業ディレクトリを設定する必要があります。rmdir

もちろん、作業ディレクトリが現在のディレクトリである他のアプリケーションを開始することはお勧めできません。このディレクトリは後で削除する必要があり、バッチ ファイルの終了時に実行を継続します。開始されたアプリケーションは、このディレクトリを作業ディレクトリとしても使用するためです。

于 2014-11-03T08:50:33.323 に答える
0

私の言葉 - それはあいまいなものでしたが、rmdir をさまざまな場所に置いてコードをステップ実行することで、最終的に答えを見つけました。誰かが同じことに遭遇した場合に備えて、ここに投稿します...

基本的に、私はcmdプロンプトを呼び出し、上記のフォルダーにいる間に外部exeを起動していました。その後、TaskKill を使用して exe を強制的に閉じていましたが、削除しようとしていたディレクトリのパスで cmd コンソールを開いたままにしていました。もっとはっきりしてみます……。

バッチ スクリプトがディレクトリ (例: C:\Windows\Scripts\Launch) にある間に、次のコマンドを使用しました。

Start "AppLaunch" Call "!_supExe!" !_supCmd!

展開後、次のように変換されます。

Start "AppLaunch" Call "C:\Windows\Program Files(x86)\Troubleshooter\trbshtr.exe" -game "My Game"

読んだところ、Windowsにバグがあり、次のコマンドが失敗したように見えるため、これを使用していました。

Start "AppLaunch" "C:\Windows\Program Files(x86)\Troubleshooter\trbshtr.exe" -game "My Game" 

問題は、exe とパラメーターの両方に引用符を使用する必要がある場合 (たとえば、スペースがある場合) に発生します。Windowsはそれを正しく読みません。したがって、これらのアプリを起動するには topmost を使用する必要がありました。

問題は、使用した場合:

taskkill /f /im trbshtr.exe

exe は強制終了されましたが、コマンド プロンプトは強制終了されませんでした。Start コマンドで /b を使用しても違いはありませんでした。

したがって、解決策は、ディレクトリから、上記を介して他のアプリを起動する前にバッチスクリプトが変更しないディレクトリに移動することでした。仕事終わり……

これで、開いているすべての cmd ウィンドウ (または /b スイッチを使用している場合は taskmgr 内のウィンドウ) を閉じる方法が残ります。それはおそらく別の検索またはスレッドのトピックです!

于 2014-11-03T18:38:24.293 に答える