web-dev-qa-db-ja.com

コマンドまたはバッチファイルを使用して特定の開いているフォルダーを閉じる方法は?

このコマンドを使用して特定のフォルダを開くことができます:

start "" "c:\foldername"

同じように、コマンドプロンプトまたはバッチを使用して同じフォルダーを閉じるにはどうすればよいですか?

4
Philip

既定では、エクスプローラーは個別のプロセスを生成しません。そのため、すべてのウィンドウ、タスクバー、およびエクスプローラーが実行するすべてを強制終了しないと、1つのプロセスを強制終了できません。

ただし、エクスプローラウィンドウを独自のプロセスで開くことを有効にするだけで、突然、コマンドラインから1つのウィンドウを停止できます。

エクスプローラーを変更して独自のプロセスでウィンドウを開く方法
Windowsのバージョンによって入手方法が異なります。また、使用しているWindowsのバージョンについて言及するのを忘れたため、Windows 10を想定します。

エクスプローラウィンドウで[表示]タブを開き、右側にあるオプションを押します。

エクスプローラオプションで、[表示]タブに移動し、[詳細オプション]で、次のような設定を探します:Launch folder windows in a separate process

このオプションはレジストリから変更することもできますが、正確な場所はわかりません。

パスでウィンドウを強制終了できるようにするには、次の設定も変更する必要があります。enable Display the full path in the title bar

この2番目の設定が必要なのは、キルする特定のウィンドウをタイトルで表す必要があるためです。デフォルトでは、現在のフォルダの名前のみが表示されます。

したがって、C:\ Program FilesとD:\ Program Filesがある場合、両方のProgram Filesが表示され、両方のフォルダーを開いている場合、1つのコマンドで両方のウィンドウが強制終了されます。

つまり、これを有効にすると、taskkillを使用してそのウィンドウを終了できます。

入力する必要があるコマンドの種類を知るために、tasklistを使用して最初にウィンドウを見つけることができます。 tasklistの優れている点は、taskkillとほとんど同じ構文を使用することです。少なくとも私たちが望むことは同じです。

ウィンドウの検索
最初に必要なウィンドウを開き、次にコマンドプロンプトを開きます。今タイプしてください

tasklist /V /FI "IMAGENAME eq Explorer.exe"

これはあなたが殺すことができるものを正確に教えてくれます。

あなたの場合、あなたは次のものを使いたいでしょう:

tasklist /V /FI "WINDOWTITLE eq C:\Program Files"

プログラムファイルを強制終了する場合。

複数のウィンドウを開いている場合、ウィンドウ名はアクティブだった最後のウィンドウのみに表示されます。

エクスプローラーでC:\を使用してパスが開いているウィンドウを検索する場合は、次のコマンドを使用できます。

tasklist /V /FI "IMAGENAME eq Explorer.exe" /FI "WINDOWTITLE eq C*"

ここでは*を使用しています。 tasklistではワイルドカードを使用できますが、検索後のみです。したがって、上記の場合、WindowsのタイトルはCで始まる必要がありますが、それ以外は任意です。

ここで、ウィンドウを強制終了するために使用するコマンドを見つけたら、tasklistをtaskkillに置き換え、/ Vパラメーターを削除します。/Vは、ウィンドウのタイトルなど、より多くの情報を表示するためにのみ使用されます。

したがって、最後に開いたCで始まるエクスプローラウィンドウを強制終了するには、次のコマンドを使用できます。

taskkill /FI "IMAGENAME eq Explorer.exe" /FI "WINDOWTITLE eq C*"
4
LPChip

デフォルトでは、エクスプローラーは単一のプロセスとして実行され、開くウィンドウはすべてプロセスのスレッドにすぎません。
通常、プログラムを閉じるには、プロセスに閉じるメッセージを送信します。この場合、Explorer.exeを閉じると、すべてのエクスプローラウィンドウが閉じます。

個々のウィンドウを閉じるには、独自のプロセスで各ウィンドウを開きます。これは、レジストリ設定または[表示]-> [オプション]-> [表示]-> [詳細設定]で有効にすることで実行できます。「起動...別のプロセス」

a)閉じたいウィンドウのPID(プロセスID)を見つけます。

タスクマネージャー経由:
1。プロセスのリストで、「Windows Explorer」の左側にある矢印をクリックします
2。ウィンドウ名が、閉じたいウィンドウと一致することを確認してください
3。 「Windows Explorer」を右クリックし、「詳細に移動」をクリックします
4。 pidを記録する

cMD経由:
tasklist /V /FI "IMAGENAME eq Explorer.exe"

各エクスプローラウィンドウが独自のプロセスで開いている場合、上記のコマンドは最後の列にウィンドウタイトルを表示します。
それ以外の場合は「N/A」が表示されます。

すべてのエクスプローラウィンドウのPIDは同じになります。 Explorer.exeプロセスには独自のpidがあり、タイトルは「N/A」です。
「個別のプロセス」が有効になっている場合。 Folder Viewオプションを使用すると、taskkillのプロセスIDとフィルターオプションを使用して各ウィンドウを閉じることができます。

閉じるには、目的のウィンドウを最初にアクティブにする必要があります。それ以外の場合は、pidで閉じると最後にアクティブだったウィンドウが閉じるか、ウィンドウタイトルフィルターで閉じるとエラーが発生します。

情報:指定された条件で実行されているタスクはありません。

b)taskkill /pid <pid>は、最後のアクティブウィンドウを閉じます。
このコマンドを繰り返すと、次のウィンドウが表示されます。

またはtaskkill /im Explorer.exe /fi "windowtitle eq <window name>"
またはtaskkill /fi "IMAGENAME eq Explorer.exe" /fi "windowtitle eq <window name>"

<ウィンドウ名>は大文字と小文字を区別しません
フォルダビューでタイトルバーのフルパスが有効になっている場合は、フルパスまたはワイルドカードを含めます。

すべてのエクスプローラウィンドウを閉じるには:
taskkill /im Explorer.exe

ノート:

  1. エクスプローラウィンドウをアクティブにするには、ウィンドウの再利用が有効になっている場合は、同じコマンドを発行してウィンドウを開きます。
  2. Explorerのwindow(ing)プロセスのpidは、応答テーブルの最後の行の「PID」列にあります。 FORループ経由でアクセスできます。
  3. @HelpingHandからウィンドウを閉じるためのVBS回避策:
    cmdまたはバッチファイルを使用して特定の開いているフォルダーを閉じる方法
  4. ウィンドウをアクティブにするvbsの回避策:
    Windowsで2つのアプリケーションを自動的に切り替えるアプリケーション

Win 10でテスト済み

0
Zimba

これはハイブリッドのバッチjscriptであり、すべてのエクスプローラーウィンドウをループし、それがtaskkillまたは Alt+F4。 VBSでも、単独でも、ハイブリッドバッチVBSファイルでも実行できます。

@if (@CodeSection == @Batch) @then
@echo off
cscript //e:jscript //nologo "%~f0" %*
exit /b
@end

// JScript Section
var folder = "file:///C:/foldername"; // the folder to check
var shellWindows = (new ActiveXObject("Shell.application")).Windows();
if (shellWindows != null)
{
    for (var win = new Enumerator(shellWindows); !win.atEnd(); win.moveNext())
        if (folder == win.item().LocationUrl) win.item().Quit()
}
0
phuclv