Windows: Jak dodać akcję skryptu wsadowego do menu Kliknij prawym przyciskiem myszy


18

Mam kilka programów, które tworzą pliki tymczasowe lub pliki kopii zapasowych lub podobne pliki, które nie są ważne. Na przykład GVim dla Windows domyślnie tworzy plik kopii zapasowej w filename.txt~.

Czasami muszę wyczyścić katalog i usunąć wszystkie te pliki. Stworzyłem do tego prosty plik .bat. Uciążliwe jest jednak uruchomienie CMD, przejście do folderu, uruchomienie skryptu. Zwłaszcza, że ​​jest to skrypt, który chciałbym często uruchamiać w różnych folderach. Nie chcę kopiować skryptu do wielu folderów, ponieważ byłby to koszmar konserwacji.

Pomyślałem więc, że najlepszym rozwiązaniem byłoby dodanie pozycji menu Kliknij prawym przyciskiem myszy, która pozwoli mi uruchomić skrypt. Tak, że mogę kliknąć prawym przyciskiem myszy folder w Eksploratorze i kliknąć Oczyść, a następnie uruchomić skrypt w tym folderze.

Więc moje pytanie brzmi: jak dodać akcję menu po kliknięciu prawym przyciskiem myszy, która uruchamia niestandardowy skrypt wsadowy?

Odpowiedzi:


18

Próbowałem na Windows XP SP3 z tym kluczem .reg. W tej chwili nie masz systemu Windows 7, aby go poprawnie przetestować, ale powinien być prawie taki sam.

  1. Otwórz notatnik i wklej kod od dołu.
  2. Edytuj według własnych potrzeb.
  3. Zapisz jako MyScript1.reg
  4. Kliknij dwukrotnie, aby zaimportować do rejestru.
  5. Przetestuj, klikając prawym przyciskiem myszy dowolny katalog w Eksploratorze
Edytor rejestru systemu Windows w wersji 5.00

[HKEY_CLASSES_ROOT \ Directory \ shell \ MyScript1]
@ = „Uruchom MyScript1”

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

4
Trochę edytowałem twoją odpowiedź. „Edytor rejestru systemu Windows w wersji 5.00” jest obowiązkowym „nagłówkiem” plików .reg. W przeciwnym razie system Windows odmówi wstrzyknięcia zawartości do rejestru.
extremko

+1 za wskazanie tego jednego. Zupełnie o tym zapomniałem, gdy kod c / p.
Robert Schmidt

1
Próbowałem tego. Teraz mogę kliknąć prawym przyciskiem myszy na folderze directyly, ale to nie działa, jeśli I kliknij prawym przyciskiem myszy wewnątrz folderu. Właśnie tego chcę. Jak to zrobić?
ervingsb

1
To inne pytanie niż „Aby móc kliknąć prawym przyciskiem myszy folder w Eksploratorze i kliknąć Oczyść, a następnie uruchomić skrypt w tym folderze”.
Robert Schmidt,

Tak, dlatego to wyjaśniłem. Przepraszam za bycie nieprecyzyjnym. Właściwie uważam to za kliknięcie folderu prawym przyciskiem myszy. Po prostu nie jest to ikona folderu, ale wewnątrz folderu.
ervingsb

19

Właściwie obecna odpowiedź nie jest nieaktualna. Próbowałem dokładnie tego samego na Windows 10 i mogłem dodać Run Batch scriptdo menu kontekstowego wszystkich folderów w Windows.

Oto treść mojego skryptu wsadowego (nie będzie działać ze ścieżkami UNC ):

@ECHO WYŁ
Wywołano ECHO% ~ n0 z następującymi argumentami:
USTAW argumenty =% *
JEŚLI NIE OKREŚLONO argumentów, GOTO END
ECHO %*
:KONIEC
PAUZA

Wprowadzone przeze mnie zmiany w rejestrze można replikować za pomocą tego pliku REG:

Edytor rejestru systemu Windows w wersji 5.00

[HKEY_CLASSES_ROOT \ Directory \ shell \ Uruchom skrypt partii]
@ = „& Uruchom skrypt wsadowy”

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

To dodaje tylko pozycję menu kontekstowego dla wszystkich katalogów / folderów w systemie Windows. Jeśli chcesz, aby zamiast tego wyświetlał się dla każdego pliku, możesz użyć tego:

Edytor rejestru systemu Windows w wersji 5.00

[HKEY_CLASSES_ROOT \ * \ shell \ Uruchom skrypt]
@ = „Uruchom i skrypt”

[HKEY_CLASSES_ROOT \ * \ shell \ Uruchom skrypt \ polecenie]
@ = "\" H: \\ BATCH_FILE_PATH \\ context-batch.bat \ "\"% 1 \ ""

Alternatywnie możesz dodać skrypt wsadowy do Send Tolisty towarów, tworząc skrót do skryptu wsadowego i umieszczając go pod %APPDATA%\Microsoft\Windows\SendTo(lub wprowadź shell:sendtow pasku adresu)

Jeśli chcesz, aby skrypt wyświetlał się w menu kontekstowym, które pojawia się po kliknięciu prawym przyciskiem myszy pustego miejsca w katalogu (tło katalogu?), Możesz użyć następującego pliku REG:

Edytor rejestru systemu Windows w wersji 5.00

[HKEY_CLASSES_ROOT \ Directory \ Background \ shell \ Uruchom skrypt partii]
@ = „& Uruchom skrypt wsadowy”
„Ikona” = „% SystemRoot% \\ System32 \\ shell32.dll, 71”

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

Nie potrzebujesz "Icon"="%SystemRoot%\\System32\\shell32.dll,71"linii. Po prostu dodaje ikonę do menu kontekstowego, która wygląda następująco:

okna ikon menu kontekstowego


Dzięki! Nawiasem mówiąc, czy wiesz, jak wyświetlić to menu kontekstowe po kliknięciu prawym przyciskiem myszy pustej przestrzeni bieżącego folderu (nie tylko po kliknięciu samego folderu)?
Tom Brito

@TomBrito Proszę zobaczyć moją najnowszą edycję.
Vinayak

@Tom Brito: Modyfikacja pustego menu kontekstowego wydaje się być odpowiedzią tutaj: stackoverflow.com/questions/4902041/…
kreemoweet

@kreemoweet Dziękujemy za powiązanie tego! Jednak dowiedziałem się o tym, analizując Edytor menu kontekstowego .
Vinayak

@kreemoweet Zmieniłem ciąg ścieżki, Directory\Backgroundaby zawierał, %Vponieważ przekaże bieżący katalog do skryptu. Jednak nie jestem pewien, co to znaczy. %Wwydaje się równie dobrze działać.
Vinayak

7

Poleciłbym domyślny edytor programów do tego zadania. Jest bardziej przyjazny dla użytkownika i prawdopodobnie bezpieczniejszy niż bezpośrednia edycja rejestru.

Wybierz menu kontekstowe wprowadź opis zdjęcia tutaj

Wybierz rozszerzenie, które chcesz zmienić. wprowadź opis zdjęcia tutaj

Wybierz Dodaj ... wprowadź opis zdjęcia tutaj

Nadaj swojemu tytułowi tytuł, przejdź do pliku wsadowego i opcjonalnie wybierz ikonę reprezentującą twoje polecenie. wprowadź opis zdjęcia tutaj

Zapisz menu kontekstowe w rejestrze i gotowe.


Chciałbym uruchomić partię w folderach, a nie w typie pliku. Wygląda na to, że to nie pomaga ...
Tom Brito

Pomogło mi to, dziękuję za udostępnienie.
Daniel Kaplan

Niezły program. Dzięki.
Laurie Stearn

0

Alternatywnym rozwiązaniem, którego używam w systemie Windows 10, jest dodanie skryptu do jednego z folderów w zmiennej path, a następnie, gdy jesteś w Eksploratorze, użyj sekwencji:

  • ctrl + L - aby rozpocząć pisanie w pasku wyszukiwania

  • wpisz: cmd, a następnie naciśnij klawisz Enter -, aby uruchomić cmd w bieżącym katalogu

  • uruchom skrypt, wpisując nazwę pliku


0

@Vayayak,

Jeśli używasz opcji „wyślij do”, prawdopodobnie będziesz musiał dodać linię cd /d %1na początku polecenia wsadowego, aby działała pod ścieżką docelową.

mój bieżący plik wsadowy wygląda następująco:

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

Dzięki za pomoc, natknąłem się na to przez Google we właściwym czasie :)


To jest naprawdę komentarz, a nie odpowiedź na pierwotne pytanie. Aby skrytykować lub poprosić autora o wyjaśnienie, zostaw komentarz pod jego postem - zawsze możesz komentować własne posty, a gdy będziesz mieć wystarczającą reputację , będziesz mógł komentować każdy post . Proszę przeczytać Dlaczego potrzebuję 50 reputacji, aby móc komentować? Co mogę zamiast tego zrobić?
DavidPostill

@DavidPostill dobrze, nie miał własnego postu w tym wątku do skomentowania przed opublikowaniem swojej odpowiedzi .. I (przypuśćmy, że chciałby powiedzieć coś, co jest godne komentarza), co mógłby zrobić, aby skomentować? prawdopodobnie nic.
barlop

@barlop Jak dobrze wiesz, odpowiedzi nie zastępują komentarzy. Jedną z możliwości jest zaproponowanie edycji drugiej odpowiedzi ... ale to prawdopodobnie zostanie odrzucone.
DavidPostill

@DavidPostill chodzi mi o to, że wtedy nie ma on żadnej opcji. i nie jesteś do końca pewien tego faktu w swoim oryginalnym komentarzu. W rzeczywistości twój oryginalny komentarz sugeruje, że ma on pewne opcje, ale nie ma.
barlop

@barlop Ah. DOBRZE.
Pomyślę
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.