Bir bağlam menüsü için bir kabuk komutu yazarken hangi özel değişkenler kullanılabilir


46

Windows 'kabuk bağlam menüsünü genişletirken (örneğin, dizinlere' burada açık komutu 'eklemek için), kayıt defterinde bir' komut 'anahtarının oluşturulması gerekir.

Bu 'komut' anahtarının değeri görünüşte herhangi bir geçerli komut satırı olabilir.

Bu komut satırında hangi özel değişkenlerin kullanılabileceğini bilmek istiyorum.

Örneğin, bir cmd penceresini bir yönetmenin içerik menüsünden (*) açmak için aşağıdaki komutu kullanıyorum:

cmd.exe /e:on /f:on /s /k pushd "%V"

Ne %Vanlama geldiğini veya bu değişkenlerin tam listesinin ne olduğunu gösteren hiçbir referans bulamıyorum .


(*) Bunun için aşağıdaki kayıt defteri anahtarları oluşturulur:

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\cmdshell]
@=Open Command Prompt Here"

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\cmdshell\command]
@="cmd.exe /e:on /f:on /s /k pushd \"%V\""

Yanıtlar:


58

Tarafından yapılan bir açıklama Chris Guzak üzerinde genişletme kısayol menüleri mevcuttur MSDN makale listeleri çeşitli "komut satırı değişkenleri":

% * - Tüm parametrelerle değiştirin.

% ~ - İkinci parametreyle başlayan ve sonraki tüm parametrelerle değiştirin.

% 0 veya% 1 - İlk dosya parametresi. Örneğin, "C: \ Users \ Eric \ Desktop \ Yeni Metin Belgesi.txt". Genelde bu tırnak işaretleri içinde olmalıdır ve uygulamalar komut satırı ayrıştırma, adları ve farklı komut satırı parametrelerinde boşluk bulunan dosyaları ayırmak için tırnak kabul etmelidir (bu en iyi güvenlik uygulamasıdır ve MSDN'de belirtildiğine inanıyorum).

(<n> 2-9 olduğu)% <n> - n yerine inci parametresi.

% s - Komutu göster.

% h - Kısayol tuşu değeri.

% i - Paylaşılan bellek tutamacında saklanan IDList buraya iletilir.

% l - İlk parametrenin uzun dosya adı formu. Win32 / 64 uygulamalarının uzun dosya adlarından geçirileceğini, Win16 uygulamalarının kısa dosya adını aldıklarını unutmayın. % 1 belirtilmesi, uygulama tipi için prob ihtiyacını önlediği için tercih edilir.

% d - İlk parametrenin mutlak ayrıştırma adı (dosya sistemi yolu olmayan öğeler için).

% v - Hiçbiri olmayan fiiller için. Parametre geçilmezse bu çalışma dizinidir.

% w - Çalışma dizini.

Bu yüzden% L veya% l tercih edilmelidir.

Ayrıca bkz. Http://www.robvanderwoude.com/ntstart.php


18
"Hiçbiri ima etmeyen fiiller için" ile neyin kastedildiğini anlamıyorum.
Albay Panik

2
Hakkında bir uyarı %W: Her zaman kullanılamaz ve commanddeğerinizde kullanılıyorsa şifreli bir hata mesajı atacaktır . Örneğin, sürücünün veya bir kitaplık klasörünün bağlam menüsünde içerik menüsü öğesini çağırmak bu değişkeni başlatmaz. Bir dosya işleyicisinin içerik menüsü girişi dışında kullanılmasından kaçının.
samthecodingman

Kimse denedi %~mi? Sadece bir hata alıyorum.
cdlvcdlv

2
%VDizin adı istiyorsanız, yani kullanılmalıdır. komutunu bağlam menüsüne eklemek istediğinizde, tek bir dosyaya veya bir dizin adına değil, arka plana tıkladığınızda. %Lbu durumda çalışmayacak.
EnterTheNameHere Bohemian

11

Bu soru beni çok etkiledi ve biraz deney yaptım. Benim bir klasörüm var C:\iso. Sağ tıklama işini yaptığımda ne buldum:

D = C:\iso
H = 0
I = :115057472:7932
L = C:\iso
S = 1
V = C:\iso
W = C:\

Iher denemede farklı bir sayı seti döndürdü. HHer zaman 0 ve Shep 1. oldu D, Lve Vtüm hedef klasör vardı. Woldu ebeveyn hedef klasörün. Bunu genişletmek isteyen var mı?

Bilginize: Aşağıdaki kayıt defteri girdilerini sınamak için kullandım:

[HKEY_CLASSES_ROOT\Directory\shell\testcmd]
@="Test Command Window Directory"
[HKEY_CLASSES_ROOT\Directory\shell\testcmd\command]
@="cmd.exe /k \"echo %A`%B`%C`%D`%E`%F`%G`%H`%I`%J`%K`%L`%M`%N`%O`%P`%Q`%R`%S`%T`%U`%V`%W`%X`%Y`%Z\""

(Sınırlayıcılar için `karakterler kullanıldı)


3
Eğer sağ tıkladınız mı içinde klasör veya üzerinde klasörün?
Albay Panik


1

% V'nin ne anlama geldiğini veya bu değişkenlerin bir listesini bulmak gerçekten zor, Google aracılığıyla da% L olduğunu görünce buldum. Bence bir isteme% V veya% L'den fazla geçmeniz gerektiğini düşünmüyorum, sanırım başka bir yararlı bilgi yok. % V dizinin adı olabilirse,% L bir dosyanın yeri olabilir. 'Echo' yapmak, şüphe duyduğunuzda yardımcı olabilir ...

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.