Windows:右クリックメニューにバッチスクリプトアクションを追加する方法


18

一時ファイル、バックアップファイル、または重要ではない同様のファイルを作成するプログラムがいくつかあります。たとえば、Windows用のGVimはデフォルトでバックアップファイルを作成しますfilename.txt~

ディレクトリをクリーンアップして、これらのファイルをすべて削除する必要がある場合があります。このために簡単な.batファイルを作成しました。ただし、CMDの起動、フォルダーへの移動、スクリプトの実行が面倒です。特に、これはさまざまなフォルダで頻繁に実行したいスクリプトです。また、スクリプトを複数のフォルダーにコピーしたくないので、これはメンテナンスの悪夢です。

そのため、スクリプトを実行できる右クリックメニュー項目を追加することが最善の解決策になると考えていました。そのため、エクスプローラーでフォルダーを右クリックして[クリーンアップ]をクリックし、このフォルダーでスクリプトを実行できます。

私の質問は次のとおりです。カスタムバッチスクリプトを実行する右クリックメニューアクションを追加するにはどうすればよいですか。

回答:


18

この.regキーを使用してWindows XP SP3で試しました。現時点でWindows 7を適切にテストする必要はありませんが、ほとんど同じです。

  1. メモ帳を開き、以下からコードを貼り付けます。
  2. 必要に応じて編集します。
  3. MyScript1.regとして保存
  4. ダブルクリックしてレジストリにインポートします。
  5. エクスプローラーで任意のディレクトリを右クリックしてテストする
Windowsレジストリエディターバージョン5.00

[HKEY_CLASSES_ROOT \ Directory \ shell \ MyScript1]
@ = "MyScript1を実行"

[HKEY_CLASSES_ROOT \ Directory \ shell \ MyScript1 \ command]
@ = "\" C:\\ MyScriptsDirectory \\ MyScript1Directory \\ MyScript1.bat \ "\"%1 \ ""

4
あなたの答えを少し編集しました。「Windowsレジストリエディターバージョン5.00」は、.regファイルの必須の「ヘッダー」です。そうしないと、Windowsはコンテンツをレジストリに挿入することを拒否します。
extremko

その1つを指摘するための+1。c / pコードのとき、私はそれを完全に忘れていました。
ロバートシュミット

1
これを試してみました。今私は、フォルダ上で右クリックdirectylyことができますが、私は右クリック場合、それは動作しません内部のフォルダ。これは実際に私が欲しいものです。どうやってするか?
ervingsb

1
これは、「エクスプローラーでフォルダーを右クリックして [クリーンアップ]をクリックし、このフォルダーでスクリプトを実行できるようにする」と
ロバートシュミット

ええ、だから私はそれを明確にした。不正確で申し訳ありません。実際には、フォルダを右クリックすると考えています。それはただのフォルダアイコンではなく、フォルダの中にあります。
ervingsb

18

実際、現在の答えは古くなっていません。Windows 10でもまったく同じことを試してみたところ、Windows Run Batch scriptのすべてのフォルダーのコンテキストメニューに追加することができました。

これは私のバッチスクリプトの内容です(UNCパスでは動作しません):

@ECHO OFF
ECHO%〜n0は次の引数で呼び出されました:
SET args =%*
定義されていない場合は、GOTO ENDを引数に取ります
エコー %*
:終わり
一時停止

私が行ったレジストリの変更は、このREGファイルで複製できます。

Windowsレジストリエディターバージョン5.00

[HKEY_CLASSES_ROOT \ Directory \ shell \ Run Batch script]
@ = "&バッチスクリプトを実行"

[HKEY_CLASSES_ROOT \ Directory \ shell \ Run Batch script \ command]
@ = "\" H:\\ BATCH_FILE_PATH \\ context-batch.bat \ "\"%1 \ ""

これは、Windowsのすべてのディレクトリ/フォルダーのコンテキストメニュー項目のみを追加します。代わりに各ファイルごとに表示したい場合は、これを使用できます:

Windowsレジストリエディターバージョン5.00

[HKEY_CLASSES_ROOT \ * \ shell \ Runスクリプト]
@ = "実行&script"

[HKEY_CLASSES_ROOT \ * \ shell \ Run script \ command]
@ = "\" H:\\ BATCH_FILE_PATH \\ context-batch.bat \ "\"%1 \ ""

または、バッチスクリプトへのSend Toショートカットを作成し、それを下に置く%APPDATA%\Microsoft\Windows\SendTo(またはshell:sendtoアドレスバーに入力する)ことにより、アイテムリストにバッチスクリプトを追加できます。

ディレクトリ内の空のスペース(ディレクトリの背景?)を右クリックすると表示されるコンテキストメニューにスクリプトを表示する場合は、次のREGファイルを使用できます。

Windowsレジストリエディターバージョン5.00

[HKEY_CLASSES_ROOT \ Directory \ Background \ shell \ Run Batch script]
@ = "&バッチスクリプトを実行"
"Icon" = "%SystemRoot%\\ System32 \\ shell32.dll、71"

[HKEY_CLASSES_ROOT \ Directory \ Background \ shell \ Run Batch script \ command]
@ = "H:\\ BATCH_FILE_PATH \\ context-batch.bat \"%V \ ""

"Icon"="%SystemRoot%\\System32\\shell32.dll,71"行は必要ありません。次のようなアイコンをコンテキストメニューに追加するだけです。

コンテキストメニューアイコンウィンドウ


ありがとう!ちなみに、現在のフォルダーの空のスペースを右クリックしたときに(フォルダー自体をクリックしたときだけでなく)このコンテキストメニューを表示する方法を知っていますか?
トム・ブリト

@TomBrito最新の編集をご覧ください。
ビナヤック

@Tomブリトー:空きスペースのコンテキストメニューを変更すると、ここで答えているようだ:stackoverflow.com/questions/4902041/...
kreemoweet

@kreemoweetそれをリンクしてくれてありがとう!しかし、Context Menu Editorを分析することでこれを知りました。
ビナヤック

@kreemoweet 現在のディレクトリをスクリプトに渡すためDirectory\Backgroundに含めるパス文字列を変更しました%V。しかし、私はそれが何を意味するのか本当に分かりません。%W同様に機能するようです。
ビナヤック

6

このタスクには、デフォルトプログラムエディタをお勧めします。レジストリを直接編集するよりもユーザーフレンドリーであり、ほぼ間違いなく安全です。

コンテキストメニューを選択 ここに画像の説明を入力してください

変更する拡張子を選択します。 ここに画像の説明を入力してください

追加...を選択します ここに画像の説明を入力してください

コマンドにタイトルを付け、バッチファイルを参照し、オプションでコマンドを表すアイコンを選択します。 ここに画像の説明を入力してください

コンテキストメニューをレジストリに保存すると、準備完了です。


ファイルの種類ではなく、フォルダでバッチを実行したいと思います。それは助け...ないように見える
トム・ブリト

これは私を助けてくれました、共有してくれてありがとう。
ダニエルカプラン

素敵なプログラム。ありがとう。
ローリースターン

0

私がWindows 10で使用する代替ソリューションは、パス変数のフォルダーの1つにスクリプトを追加し、エクスプローラーでシーケンスを使用する場合です。

  • ctrl + L-検索バーで書き込みを開始するには

  • cmdと入力し、Enterを押して、現在のディレクトリでcmdを起動します

  • ファイル名を入力してスクリプトを実行します


0

@Vinayak、

「送信」オプションを使用する場合は、おそらくcd /d %1ターゲットパスの下で実行されるように、バッチコマンドの先頭に行を追加する必要があります。

私の現在のバッチファイルは次のようになります。

@echo off
cd /d %1    
del *.txt
pause

助けてくれて、たまたま適切なタイミングでグーグル経由でこれを見つけました:)


これは実際にはコメントであり、元の質問に対する答えではありません。投稿者に批評または説明を依頼するには、投稿の下にコメントを残します-自分の投稿にいつでもコメントできます。評価が十分になったら、投稿にコメントできます。コメントするのに50の評判が必要な理由を
DavidPostill

@DavidPostillよく、彼は自分の回答を投稿する前に、このスレッドにコメントする自分の投稿を持っていませんでした。おそらく何も。
-barlop

あなたがよく知っているように、@ barlop Answersはコメントに代わるものではありません。代替案の1つは、他の回答の編集を提案することですが、それは拒否される可能性があります。
DavidPostill

@DavidPostill私のポイントは、彼には選択肢がないということです。元のコメントでその事実について本当に明確ではありません。実際、あなたの元のコメントは、彼にはいくつかの選択肢があるが、そうではないという考えを示唆しています。
-barlop

@barlopああ。OK。私は...いくつかのより良い言葉遣いについて考えましょう
DavidPostill
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.