Hangi komut dosyası dilleri Windows'ta yararlıdır? [kapalı]


48

Hangi komut dosyası dilleri Windows otomasyonu için yararlıdır?


10
+ 1 yaptım çünkü yazdıklarının arkasına gizlenmiş ilginç bir soru görebiliyorum. Olduğu gibi, bence "ana" daha az belirsiz yapmak için düzenlemeniz gereken talihsiz bir kelime seçimidir. Belki ne demek istediğine bağlı olarak, "en çok kullanılan", "en iyi şekilde desteklenen" veya "önerilen" olabilir. SuperUser'a Hoşgeldiniz! :)
Brennan Vincent,

2
@Brennan Vincent: Bu harika bir öneri, ancak bu noktada "ana" kelimesini değiştirmek cevapların ruhundan zarar verebilir. Bence yorumunuz bu konuda çok konuştu ve sorunun olduğu gibi bırakılması daha iyi. (Bunun için sizin için +1, bu arada.)
Randolf Richardson

1
Şu anda bu sorunun öznel kategoriye girdiğini düşünüyorum. Ancak Brennan’ın önerdiği gibi ifadelerde yapılan küçük bir değişiklikle bunun oldukça ilginç bir topluluk wiki girişi olabileceğini düşünüyorum.
Joe Taylor

1
Bana da öznel gözüküyor. Yazı dilleri için "ana" veya "en iyi" veya "tercih edilen", gerçekleştirilen özel göreve ve bir kişinin beceri ve tecrübesine bağlı olarak farklılık gösterebilir.
Iszi

3
Şu soruyu soruyorum: Günümüzde Windows için yerel komut dosyası dili nedir?, Yani, şeyleri yapmak için API'leri, ActiveX'i vb. Gerektirmek yerine hangi komut dosyası dili, OS'de yerleşik kancalar ve işlevler taşır?
Synetech

Yanıtlar:


36
  1. Güç kalkanı
  2. Windows Komut Dosyası Sistemi Ana Bilgisayar
    a. VBScript
    b. JScript
  3. Toplu İş Dosyaları

PowerShell (v2.0)

Windows 7 ve Server 2008'den itibaren, PowerShell'i Windows ile birlikte gelirken göz önünde bulundurmak mantıklıdır ve Lync ve Exchange gibi sunucu yazılımlarını yönetmek için de temel bir komut seti vardır. Büyüyen bir özellik listesi mevcut, ayrıntılar için Komut Merkezi'ne bakın.

Windows Komut Dosyası Sistemi

Windows Komut Dosyası Sistemi (WSH), teknik olarak ActiveX Komut Dosyası Motorları için bir komut dosyası sistemidir. VBScript ve JScript (Microsoft'un JavaScript uygulaması), varsayılan olarak yüklenen iki motordur. Perl, PHP ve Ruby gibi birçok açık kaynak kodlu olarak mevcut.

VBScript

VB6 ve VB.NET'e benzer bir sözdizimi kullanan VBScripts, .NET sınıflarına kolay erişime sahip değildir (Powershell, .NET üzerinde yazılmıştır, böylece tüm .NET işlevlerine erişebilir). VBScript, çoğunlukla WMI hizmetinden ve ortaya çıkardığı nesnelerden yararlanır.

Örnek: Bu bir geri yükleme noktası oluşturur.

Set wmi, whatName, errResults
wmi = GetObject("winmgmts:\\.\root\default:Systemrestore")
whatName = InputBox("Enter a name for the Restore Point",WScript.ScriptName)
errResults = wmi.CreateRestorePoint (whatName, 12, 100)
If errResults <> 0 then
    Wscript.Echo "Error " & errResults & " : Unable to create Restore Point"
End If

JScript

Aynı betiği ECMAScript kullanarak da yazabilirsiniz:

var wmi = WScript.GetObject("winmgmts:\\.\root\default:Systemrestore");
var whatName = WSHInputBox("Enter a name for the Restore Point",Script.ScriptName);
var errResults = wmi.CreateRestorePoint(whatName, 12, 100);
if(errResults != 0) {
    WScript.Echo("Error "+ err + " : Unable to create Restore Point");
}

Komut Toplu İş Dosyaları

Elbette iyi bir 'Toplu Dosya' var. Girişe ihtiyaçları yok.


7
Windows 7 ve Server 2008’de ise, Powershell 2.0 olacaktı
ss

@sshow 2.0 hakkında spesifik olmak konusunda hemfikir
Nick Josevski

"Intro'ya ihtiyaçları yok." Ama yok bir Extrò gerek ...
Glenn Jackman

16

Hala Windows 7'de bile DOS toplu iş dosyaları yazıyorum. Çoğu görev için bu hala oldukça iyi çalışıyor ve birlikte çalışması çok kolay (ayrıca, "FOR" gibi birçok DOS komutunun da zaman içinde iyileştirildiği ve daha fazlası sağlandığı 10 yıldan daha uzun zaman önce kullanılamayan seçenekler ve işlevler).

Benim için, bir DOS toplu iş dosyası hala Windows için ana betik dilidir (kesinlikle gelenekseldir), ancak herkesin farklı ihtiyaçları ve tercihleri ​​vardır. DOS toplu iş dosyalarının yapamadığı birçok şey var (komut dosyası dilleri de sınırlamalar getirebilir) ve bununla karşılaştığım ender durumlar için, diğer seçeneklerimin ne olduğuna bakıyorum (genellikle Perl veya bazen olabilir Küçük bir program veya bütün bir uygulama yazmak için).

Ne başarmanız gerektiğini anlamak, hangi araçların kullanılacağına karar vermede çok önemli bir adımdır. Araçlara aşinalık, seçeneklerinizi sınırlayabilen bir diğer önemli unsurdur. Hangi betik dili [veya programlama] dilini öğrenmek istediğinize karar vermeye çalışıyorsanız, umarım bu size yardımcı olacaktır.


10
"Ana" betik dili ile "en eski ve en çok kullanılan" anlamına geliyorsanız, bu kesinlikle doğru cevaptır. Ancak, cmdgerçekten bir canavarlık, kolayca kullanmak için talihsizlik yaşadım WORST kabuk komut dosyası dili.
JSB

3
Komut dosyasının diğer Windows sürümlerinde kullanılması gerektiğinde de toplu dosyaları kullanıyorum. Yalnızca Win7 / Server 2008 ile uğraşıyorsanız, PowerShell gitme yoludur.
jtreser

5
1 MS istekleri olmaya PowerShell biliyorum bunu ama için şimdi birisi "pencereler" çalıştıran bir komut dosyası göndermek istiyorsanız, onlara bir DOS toplu iş dosyası göndermek zorunda. PS, belirli görevler için belirli pencere sürümleri için mükemmeldir ve çok fazla güç harcarlar, ancak toplu iş dosyaları evrenseldir.
Alan Jackson

Bazı şirketlerde, örneğin şu anda çalıştığım bankada, Yürütme politikası, PS komut dosyalarının yürütülmesini engelliyor. Bu yüzden, PS komut dosyalarımı çevirmek için toplu iş öğreniyorum Öyleyse,
Batch’ın

2011 yılında cevabınızı kabul ettim, ancak Windows 10 Oluşturucu Güncellemesi ile Microsoft, PowerShell'i Win + X tuşlarına basarken, Başlat Menüsünde 'cmd' yazarken ve Explorer'ı sağ tıklatırken Ctrl tuşunu basılı tutarken varsayılanı yaptı. Bu yüzden şimdi Windows 10 Creators Update ve BAT / CMD eski komut dosyalarından bu yana, Powershell'i Windows için varsayılan komut dosyası dili olarak görüyorum.
Jonas

10

Bu, kime sorduğunuza bağlı. Bazıları asla parti bırakmaz, bazıları aşk vbscript, bazıları aşk powershell, bazıları ise AutoIt gibi. Sonra, Python ve Perl gibi platformlardan bağımsız olanlar var.


2
Platformlar arası komut dosyası yazma dillerinden bahsettiği için +1 (Perl benim favorim ve Python'un da yıllardır popülerlik kazandığını biliyorum).
Randolf Richardson

2
Perl için +1. Birçok platformda kullanışlıdır ve bazı Windows özel modülleri vardır.
RedGrittyBrick

1
TinyPerl'in basit Perl betiğini çok fazla bağımlılıkla gömmek için çok kullanışlı bir yol olduğunu eklerdim. Windows'ta küçük bir EXE dosyasına derleyecektir. tinyperl.sourceforge.net
Benoit

4

Windows için resmi komut dosyası "dil" in (ve Win95'ten beri) Windows Komut Dosyası Sistemi olduğunu varsayalım .

Teknik olarak, WSH kendine özgü bir dil değil, istediğin herhangi bir betik dilini kullanmana izin verecek, işletim sistemi işleri yapmayı, hatta yerleşik bir yolu olmayan şeyleri kullanmanı sağlamak için COM arayüzlerini ortaya çıkaran bir ortam (GUI değil) . dil (örneğin, Ruby'nin Windows'da oturum açmak için yerleşik bir yolu yoktur veya TCL / TK'nin Çalıştır iletişim kutusunu göstermek için yerleşik bir yolu yoktur).

Bir dosyada birden fazla dil içerebilen bazı WSF dosyaları görmüş olabilirsiniz, ancak genellikle WSH komut dosyaları bir dilde yazılmıştır ve o dilin komut dosyası sürümüne karşılık gelen bir uzantı ile dağıtılmıştır (örneğin, VisualBasic komut dosyaları için VBS, PythonScript için PYS, vb. .)


[titriyor yoğunlaşıyor], ben bunu yazardım. IE’den isteğe bağlı WSH komut dosyaları çalıştırabildiğinizi biliyor musunuz? Bu ilginç değil mi? API'lerini internete nasıl açtıklarını güzel. (Feragatname, bu alaycılık XP-SP3'e tarihlenir)
ThorSummoner

WSH ve IE ile ilgili hikaye o kadar basit değil: msdn.microsoft.com/en-us/library/bb250473(v=vs.85).aspx (güvenlik bölgelerine bağlı olarak yalnızca bir kısıtlama örneği) Ve IE 11 modundan başka VBScript'i bile desteklemiyorum. WSH komut dosyalarını çalıştırmak için IE'ye güvenmeyin.
Jonas

4

AutoIt derim ki, pencerelerde çok hızlı ve kolay bir gelişme sağlar ve çok sıkı bir şekilde bağlanır. Bu, genellikle diğer dillerde çok fazla kod alan görevlerin, autoit'te kelimenin tam anlamıyla bir satırda yapılabileceği anlamına gelir. Doğrudan exe'e derleme gibi özellikler de çok kullanışlıdır.


Monoceres gibi, AutoIt kullanıyorum . Birkaç dakika içinde hızlı prototip oluşturma ve test etme kavramları için bile çok yönlüdür. Bunların arasında, Powershell'i kullanan birçok insanı gördüğüm otomasyon için tasarlandı. Bir deneyin :)
James

1
AutoIt, özellikle UI işlevleri için (bir iletişim kutusuna yazarak kullanıcı gibi davranarak, düğmelere basmak, vb.) Oldukça havalıdır, ancak "ana" Windoze komut dosyası dilinde aramak gerçekten zor olacaktır. Bugünlerde meslektaşlarımın çoğu (20'den fazla Windows Admins ekibinde) bile duymadım.
ewall

2

Bu soruya işaret eden diğer diller (VbScript, PowerShell, Batch) çok popüler ve desteklenmektedir. Eğer zaten bir betik dili biliyorsanız ve kendinizi rahat hissediyorsanız - bununla devam edin.

Yeni bir dil almaya yatırım yapmak üzereyseniz, sizin için iki dil öneririm, yapmaya çalıştığınız işe bağlı olarak:

JavaScript (WSH yoluyla) - çeşitli Otomasyon Nesnesini kullanarak onları örnekleyerek ve Nesne Modellerini arayarak kullanmak istiyorsanız JavaScript'i kullanın. Exchange sunucusundan WMI'ya ve Office belgelerine kadar hemen hemen her şey için bir Otomasyon Nesnesi oluşturabilirsiniz. Visual Studio ile (/ x argümanıyla) hata ayıklama desteği var. Ayrıca, JavaScript’e yapılan bir yatırım HTML’ye faydalı olacağını ispat edecektir.

Perl - diğer programları başlatabilir, çıktılarını değiştirebilir, düzenli ifade uygulayabilirseniz Perl kullanın. Her ne kadar bu dil şu an düşüşe rağmen, hala çok popüler, büyük bir topluluk dili ile çok iyi destekleniyor. Bu dili, kuruluştaki JIRA veya Amazon'daki EC2 gibi diğer hizmetlerle (mutlaka Windows değil) iletişim kurmak için de düşünmelisiniz. Hata ayıklama, aynı zamanda iyi bir IDE ortamı olan (sözdizimi renklendirmesi vb.) EPIC ile tutulması desteklenir. Her şey için CPAN'da modüller var. Perl bilgisi, Windows olmayan makinelerde otomasyon yapılması gerektiğinde faydalı olacağını kanıtlayacaktır.


1
Python perl için çok iyi bir alternatiftir, ancak ikisini de kullanacağınız şeyler hemen hemen aynıdır
Phoshi

1

İlk günlerde, VBScript'i Batch izliyordu, şirket ortamında saf Windows 7 ve Server 2008 R2'nin bulunduğu Powershell yeni betik dili çok dikkat çekiyordu.


PowerShell'i devralmak için keskin bir istek duyduğuna inanıyorsunuz. PowerShell olmasını istediğinizi "kabul etmek doğru olmaz mı? ;-D
Richardson

Ben vbscript üzerinde powershell tercih evet.
EKS


1

Otomatikleştirmeye çalıştığınız şeye bağlı olarak neredeyse her şey olabilir. Toplu iş dosyalarından ve PowerShell'den otomatik tuş takımına ve Selenyum'a kadar değişebilir (GUI ile ilgili bazı görevleri otomatikleştirmeniz gerekirse).

Bazı değişiklikler eklemeniz veya önceden yazılmış komut dosyalarını desteklemeniz gerekirse, bir tane öğrenmek genellikle sorun değildir. Yeni bir şey geliştirmeye ihtiyacınız varsa - gereksinimlere ve zaten bildiklerinize göre dili / yolu seçin.

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.