Windows: Sağ Tıklama menüsüne toplu komut dosyası işlemi nasıl eklenir


17

Geçici dosyalar veya yedekleme dosyaları veya önemli olmayan benzer dosyalar oluşturan birkaç program var. Örneğin, Windows için GVim varsayılan olarak içinde bir yedekleme dosyası oluşturur filename.txt~.

Bazen bir dizini temizlemem ve tüm bu dosyaları kaldırmam gerekiyor. Bunun için basit bir .bat dosyası yaptım. Ancak, CMD'yi başlatmak, klasöre gitmek, betiği çalıştırmak zordur. Özellikle bu, çoğu zaman çeşitli klasörlerde çalıştırmak istediğim bir komut dosyası olduğundan. Ve betiği birden fazla klasöre kopyalamak istemiyorum, çünkü bu bir bakım kabusu olur.

Bu yüzden, en iyi çözümün senaryoyu çalıştırmamı sağlayan Sağ Tıklama menü öğesini eklemek olacağını düşünüyordum. Böylece Explorer'da bir klasöre sağ tıklayıp Temizleme'yi tıklatabilirim ve sonra komut dosyasını bu klasörde çalıştırabilirim.

Öyleyse sorum şudur: Özel bir toplu komut dosyası çalıştıran bir sağ tıklama menüsü eylemini nasıl eklerim?

Yanıtlar:


17

Bu .reg anahtarını Windows XP SP3'te denedim. Şu anda düzgün bir şekilde sınamak için Windows 7 yok, ancak neredeyse aynı olması gerekir.

  1. Not defterini açın ve kodu aşağıdan yapıştırın.
  2. İhtiyacınıza göre düzenleyin.
  3. MyScript1.reg olarak kaydet
  4. Kayıt defterine almak için çift tıklayın.
  5. Explorer'da herhangi bir dizine sağ tıklayarak test edin
Windows Kayıt Defteri Düzenleyicisi Sürüm 5.00

[Hkey_classes_root \ Directory \ shell \ MyScript1]
@ = "MyScript1'i yürütün"

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

4
Cevabını biraz düzenledim. "Windows Kayıt Defteri Düzenleyicisi Sürüm 5.00", .reg dosyaları için zorunlu bir "başlık" dır. Aksi halde, Windows içeriği kayıt defterine enjekte etmeyi reddedecektir.
extremko

Bunu işaret etmek için +1. C / p kodu olduğunda bunu tamamen unuttum.
Robert Schmidt,

1
Bunu denedim. Şimdi bir klasörde directyly rightclick, ama ben rightclick eğer bu işe yaramazsa içindeki bir klasöre. Aslında istediğim de bu. Bu nasıl yapılır?
ervingsb

1
Bu, " Explorer'da bir klasöre sağ tıklayıp Temizleme'yi tıklayıp betiğimin bu klasörde çalışmasını sağlamak
Robert Schmidt,

Evet, bu yüzden açıklığa kavuşturdum. Kesin olmadığım için özür dilerim. Aslında klasöre sağ tıklayarak düşünüyorum. Bu sadece klasör simgesi değil, klasörün içindedir.
ervingsb

18

Aslında mevcut cevap güncel değil. Aynı şeyi Windows 10'da denedim ve Windows'taki Run Batch scripttüm klasörlerin bağlam menüsüne ekleyebildim .

Toplu betiğimin içeriği budur ( UNC yollarıyla çalışmaz ):

@EKO KAPALI
ECHO% ~ n0, aşağıdaki argümanlarla çağrıldı:
SET args =% *
TANIMLANMAMASI durumunda GOTO END
EKO %*
:SON
DURAKLAT

Yaptığım kayıt defteri değişiklikleri bu REG dosyası ile çoğaltılabilir:

Windows Kayıt Defteri Düzenleyicisi Sürüm 5.00

[HKEY_CLASSES_ROOT \ Directory \ shell \ Toplu Betiği Çalıştır]
@ = "& Toplu Betiği Çalıştır"

[HKEY_CLASSES_ROOT \ Directory \ shell \ Toplu betiği çalıştır \ command]
@ = "\" H: \\ BATCH_FILE_PATH \\ context-batch.bat \ "\"% 1 \ ""

Bu, yalnızca Windows'taki tüm dizinler / klasörler için bir bağlam menüsü öğesi ekler. Bunun yerine her dosya için gösterilmesini istiyorsanız, bunu kullanabilirsiniz:

Windows Kayıt Defteri Düzenleyicisi Sürüm 5.00

[HKEY_CLASSES_ROOT \ * \ shell \ Komut dosyasını çalıştır]
@ = "Çalıştır ve komut dosyası"

[HKEY_CLASSES_ROOT \ * \ shell \ Komut dosyasını çalıştır \ komutu]
@ = "\" H: \\ BATCH_FILE_PATH \\ context-batch.bat \ "\"% 1 \ ""

Alternatif olarak, toplu komut dosyanızı Send Tobir kısayol oluşturarak ve altına koyarak %APPDATA%\Microsoft\Windows\SendTo(veya shell:sendtoadres çubuğuna girerek) toplu iş komut dosyanızı öğe listesine ekleyebilirsiniz.

Komut dosyanızın bir dizin içindeki boş alana sağ tıkladığınızda görünen içerik menüsünde görünmesini istiyorsanız (dizin arka planı?) Aşağıdaki REG dosyasını kullanabilirsiniz:

Windows Kayıt Defteri Düzenleyicisi Sürüm 5.00

[HKEY_CLASSES_ROOT \ Directory \ Background \ shell \ Toplu Betiği Çalıştır]
@ = "& Toplu Betiği Çalıştır"
"Simge" = "% SystemRoot% \\ System32 \\ shell32.dll, 71"

[HKEY_CLASSES_ROOT \ Directory \ Background \ shell \ Toplu betiği çalıştır \ command]
@ = "H: \\ BATCH_FILE_PATH \\ bağlamsal-batch.bat \"% V \ ""

Çizgiye ihtiyacın yok "Icon"="%SystemRoot%\\System32\\shell32.dll,71". Basitçe, içerik menünüze şöyle bir simge ekler:

bağlam menüsü simgesi pencereleri


Teşekkürler! Bu arada, geçerli klasörün boş alanını sağ tıkladığımda bu bağlam menüsünün nasıl gösterileceğini biliyor musunuz (yalnızca klasörün kendisini tıkladığımda değil)?
Tom Brito,

@TomBrito Lütfen en son düzenlememi görün.
Vinayak

@Tom Brito: Boş alan içerik menüsünü değiştirmek burada cevaplanmış gibi görünüyor: stackoverflow.com/questions/4902041/…
kreemoweet

@kreemoweet Bu bağlantı için teşekkür ederiz! Ancak bunu Context Menu Editor'ü analiz ederek öğrendim .
Vinayak

@kreemoweet Geçerli dizini komut dosyasına iletecek Directory\Backgroundşekilde eklemek için yol dizesini değiştirdim %V. Ancak, ne anlama geldiğinden emin değilim. %Waynı şekilde çalışmak gibi görünüyor.
Vinayak

4

Bu görev için Varsayılan Programlar Düzenleyicisi'ni tavsiye ederim . Hem kullanıcı dostu hem de kayıt defterini doğrudan düzenlemekten daha güvenlidir.

İçerik Menüsünü Seçin görüntü tanımını buraya girin

Değiştirmek istediğiniz uzantıyı seçin. görüntü tanımını buraya girin

Ekle'yi seçin ... görüntü tanımını buraya girin

Komutunuza bir Başlık verin, toplu iş dosyasına göz atın ve isteğe bağlı olarak komutunuzu göstermek için bir simge seçin. görüntü tanımını buraya girin

Bağlam menüsünü kayıt defterine kaydedin; gitmeniz iyi olur.


Toplu iş bir dosya türü değil, klasörler üzerinde çalıştırmak istiyorum. Yardımcı olmuyor gibi görünüyor ...
Tom Brito

Bu bana yardımcı oldu, paylaşım için teşekkürler.
Daniel Kaplan,

0

@Vinayak,

"Gönder" seçeneğini kullanıyorsanız, büyük olasılıkla satırı cd /d %1, hedef yolun altında çalışacak şekilde toplu komutun başlangıcına eklemeniz gerekir .

mevcut toplu iş dosyam şöyle görünüyor:

@echo off
set targetfolder=%1
cd /d %1

del *.txt
pause

İçinde "set targetfolder =% 1" ifadesine ihtiyacım olup olmadığından emin değilim, ancak çalışıyor, bu yüzden böyle tutuyorum :)

Yardımın için teşekkürler, google üzerinden doğru zamanda bunun üzerine yanıldım :)


Bu gerçekten bir yorum ve asıl sorunun cevabı değil . Bir yazarın açıklamasını eleştirmek veya talep etmek için, yazdıklarının altında bir yorum bırakın; istediğiniz zaman kendi yazılarınıza yorum yapabilirsiniz ve yeterli saygınlık elde ettiğinizde , herhangi bir yayına yorum yazabilirsiniz . Lütfen okuyun Neden yorum yapmak için 50 itibara ihtiyacım var? Bunun yerine ne yapabilirim?
DavidPostill

@DavidPostill, cevabını göndermeden önce, bu konuda yorum yapmak için kendi başlığında bir yazıya sahip değildi. Ve (bir yorum yapmaya layık bir şey söylemek istediğini varsayarak), yorum yapmak için ne yapabilirdi? muhtemelen hiçbir şey.
barlop

@barlop Cevaplar, bildiğiniz gibi yorumların yerine geçmez. Bir alternatif, diğer cevaba bir düzenleme önermek ... ama bu reddedilir.
DavidPostill

@DavidPostill, benim açımdan sadece seçeneğinin olmadığıdır. ve orjinal yorumunuzda bu konuda gerçekten net değilsiniz. Aslında, asıl yorumunuz, bazı seçeneklere sahip olduğu fikrini öne sürüyor ama yapmıyor.
barlop

@barlop Ah. TAMAM. Daha iyi ifadeler düşüneceğim ...
DavidPostill

0

Windows 10'da kullandığım alternatif çözüm, yol değişkenindeki klasörlerden birine komut dosyası ekliyor ve ardından gezgindeyken sırayla:

  • ctrl + L - arama çubuğuna yazmaya başlamak için

  • şunu yazın: cmd, ardından Enter tuşuna basın - geçerli dizinde cmd'yi başlatmak için

  • komut dosyasını çalıştırın, dosya adını yazarak

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.