İçindekiler:
- Adım 1: BAŞLAT Komutu
- Adım 2: SET Komutu - Dizi Teorisi (1/4)
- Adım 3: SET Komutu - Mr.Math (2/4)
- Adım 4: SET Komutu - Kullanıcı Girişi (3/4)
- Adım 5: AYARLAMA Komutu - Görünenden Fazlası (4/4)
- Adım 6: IF Komutu - Herkes Eşittir (1/2)
- Adım 7: IF Komutu - Ama Ben Senden Büyüküm (2/2)
- Adım 8: GOTO Komutu
- Adım 9: > Parametre (1/2)
- Adım 10: >> Parametre (2/2)
- Adım 11: Örnek Uygulama
- Adım 12: Sonuç: Son Notlar
Video: Gelişmiş Parti: 12 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:21
ama sorun değil, dizini değiştirmek için CD veya CHDIR komutunu kullanın. Ancak bu durumda gerçekten önemli değil.", "top":0.08480565371024736, "left":0.014285714285714285, "height":0.8586572438162544, "width":0.9357142857142857}]">
LÜTFEN BLOGUMA ZORUNLU OLABİLECEK SORULARINIZI YÖNETİN:https://tamsanh.com/blog/2008/07/11/batch-tutorial-3-advanced-batch/Artık instructables'ı ziyaret etmiyorum ve daha hızlı bu şekilde yanıt verin. Hey millet! Tam Nguyen burada. Uzun zaman oldu, ama şimdi burada! Size Toplu Öğreticilerimin bir sonraki taksitini sunuyorum!Diğer talimatlarımı okumuş olabilirsiniz (ya da okumayabilirsiniz): Partinin Temelleri Biraz Daha Gelişmiş PartiBu Eğitilebilir, ilk iki Eğitilebilir Öğeden bazı öğeler ödünç alır. Yani: ECHO CommandCD CommandDIR CommandDiğer ikisini okumadıysanız, bu komutları hızlıca incelemenizi öneririm. Burada bekleyeceğim. Tamam!Bu Instructable'ın sonunda, şunlarla samimi olacaksınız:START CommandSET CommandIF CommandGOTO Commandand> ve >> ParametersBu komutlarla, kullanıcı girdisine göre değişebilen dinamik toplu dosyalar oluşturabileceksiniz., ve oluştur ve genişlet. Öyleyse, şu güzel Komut İstemi'ni açalım ve başlayalım! Çalıştır -> cmdAlternatif olarak, şuraya gidebilirsiniz: Başlat->Program Dosyaları->Aksesuarlar->Komut İstemiBu talimattaki açıklamalarım biraz uzun oldu, bu yüzden bazı komutları estetik amaçlar için birden fazla sayfaya böldüm; Yazıyı okurken aşağı yukarı kaydırmaya gerek kalmadan resimleri görmeyi çok sevdim. Resim izleme kuralı; Genellikle her Kod Parçacığından sonra bir resim vardır. Keyfini çıkarın!
Adım 1: BAŞLAT Komutu
BAŞLAT Komutu, bir şeyleri başlatan hoş ve küçük bir komuttur! Bu basit bir komuttur ve daha zor komutlara geçmeden önce ısınmamıza yardımcı olacaktır. Komutun parametreleri tam olarak düşündüğünüz gibidir.
ThingToBeStarted.exe'yi BAŞLATINOldukça basit
WMPlayer.exe'yi BAŞLATSadece.exe'leri BAŞLATMAKla kalmaz, aynı zamanda bir web sitesi de yazabilirsiniz ve varsayılan tarayıcınızda açılır.
www. Instructables.com'u BAŞLAYINOldukça kolay, ha? Tamam. Şimdi Eğitilebilirliğin gerçek etine geçelim: SET Komutu.
Adım 2: SET Komutu - Dizi Teorisi (1/4)
SET Komutu: Değişken Tanımlayıcı. Ah. Değişkenler. Geliştiricinin ambrosia. Değişkenler,… err, değişken olan bellek bitleridir. Bu konuda IF'ler VE'ler veya DEĞİL'ler yok! (haha üzgünüm). Tamam! Peki bu bebek nasıl çalışıyor? Çok basit bir şekilde, SET komutunun parametreleri şunlardır: SET DeğişkenAdı=Değişken ValueSET kendi başına dize değişkenleri yaratacaktır.
SET TestVS=Değişken Dizisini Test Et!Bu durumda, sadece "Test Variable String!" değerini kaydettik. TestVS. Eh, hepsi eğlenceli ve oyunlar, ama değişken değerini nasıl alırız? % kullanıyoruz. Değişken adının çevresine % eklemeniz yeterli
ECHO %TestVS%Tamam güzel, ama başka ne yapabilir?
Adım 3: SET Komutu - Mr. Math (2/4)
Matematik yapabilir mi? Peki, test etmek için basit bir grup yapalım.
@ECHO OFFSET Test=1ECHO %Test%SET Test=%Test%-1ECHO %Test%PAUSENe oldu? Bu işe yaramalıydı! Bir dakika… SET komutlarının sadece dizi oluşturması da neydi? Evet. SET komutu kendi başına yalnızca bir dize değişkeni yaratacaktır, yani değerin en gerçek yorumunu yaratacaktır. "1 - 1"in "0"a eşit olduğunu düşünmez, "1 - 1"in "1 - 1"e eşit olduğunu düşünür. Peki bunu nasıl değiştiririz? Değişkenin doğrudan kopyalanmasını değil, Değerlendirilmesini istiyoruz. Bu, onu bir dizgeden bir ifadeye dönüştürmek istediğimiz anlamına gelir! Çok kolay bir değişiklik, SET komutuna bir /a eklemeniz yeterlidir. İşte onu çalışırken görmek için basit bir toplu iş dosyası veya bunu Komut İstemi kılavuzuna yazabilirsiniz. ikincisini öneririm; çok daha hızlıdır ve kod çok karmaşık değildir, ancak toplu iş dosyasını gerçekten istiyorsanız, işte burada
@ECHO OFFSET /a Test=2+2ECHO %Test%PAUSEHarika! Bunu mükemmel bir şekilde ifade etti. Artık 'matematik test.bat' dosyamızda hangi değişikliklerin yapılması gerektiğini biliyoruz.
@ECHO OFFSET /a Test=1ECHO %Test%SET /a Test=%Test%-1ECHO %Test%PAUSETamam. Hadi çalıştıralım! Harika! Mükemmel çalıştı! Ama sonra ne olacak?
Adım 4: SET Komutu - Kullanıcı Girişi (3/4)
SET ayrıca kullanıcıdan girdi isteme yeteneğine de sahiptir. SET parametrelerine /p ekleyerek, onu normal bir değişken ayarlayıcıdan kullanıcı kontrollü bir değişken ayarlayıcıya dönüştürür.
SET /p UTanımla=/p ile, program aslında duraklar ve Kullanıcı'nın girdisini bekler. Ama bekleyin, /a parametresi görmüyorum, bu değişkenin yalnızca bir dize olduğu anlamına mı geliyor? Bir nevi. Parametrelerin /p'si /a'yı tamamen olumsuzlar ve bunu denerseniz, yalnızca bir Eksik işlenen hatası alırsınız. Bu, Kullanıcı Tanımlı değişkenin ifadeleri değerlendiremeyeceği anlamına gelir. Peki ne yapılabilir? İşte kullanabileceğimizi düşündüğüm zor bir numara. SET Komutu, /p ve /a parametrelerinin tümünü aynı anda kullanmaz, doğru mu? Peki, /a ve /p parametrelerinin sıralı kullanımı ne olacak? Ahhh… seni sinsi çizmeler
@ECHO OFFECHO Hesap Makinesi Sürüm 1.0ECHO. SET /p Udefine=SET /a Udefine=%UDefine%ECHO =ECHO %UDefine%ECHO. PAUSEGüzel hesap makinesi almışsın. Şimdiye kadar anlamadıysanız, {{{ECHO.}}} boş bir satırdır. Bu harika değil mi?
Adım 5: AYARLAMA Komutu - Görünenden Fazlası (4/4)
Bu noktada, SET komutunun değişkenlerinin yalnızca dizeler ve ifadeler için iyi olduğu görünebilir. Doğru değil. Değişkenler aslında çok esnektir ve sadece ECHO'larla sınırlı değildir. Sadece kendi başına bir değişken yazmayı denediniz mi?
SET Testi=Instructables%Test%Ne garip bir hata… "Instructables" komutunun tanınmadığını söylüyor, %Test% sözdizimine sahip değil. Bu, DOS'un her değişkene elle yazılmış gibi davrandığı anlamına gelir. Peki ya
SET Testi=BAŞLAT cmd.exe%Test%Mükemmel! İşe yaradı!DOS, her değişkene kullanıcı tarafından yazıldığı gibi davranır ve buna göre çalıştırır. İşte ilginç bir kod: (Sadece Kopyala/Yapıştır; biraz sıkıcı.
@ECHO OffSET Değişkeni1=ECSET Değişkeni2=HSET Değişkeni3=O CSET Değişkeni4=ooSET Değişkeni5=l!ECHO %Değişken1%%Değişken2%%Değişken3%%Değişken4%%Değişken5%ECHO.%Değişken1%%Değişken2%%Değişken3%%Değişken4% %Değişken5%DuraklatGüzel değil mi? Her değişken tüm mesajın iki harfini içerir (Değişken2 hariç) ve değişkenleri sıraya koyarsak her harf toplanır ve ECHO Cool'un tüm komutunu tamamlar! SET komutu daha karmaşık ve güçlü komutlardan biridir. DOS sözlüğü.
Adım 6: IF Komutu - Herkes Eşittir (1/2)
Bu klasik koşullu işlenen. Temel, ancak yine de güçlü. Daha önce hiç programlama yapmamış olanlar için, IF komutu tam olarak kulağa nasıl geliyorsa öyledir. Sözdizimindeki bir ifade doğruysa (veya doğru DEĞİL), o zaman bir sonraki komut dizisi yürütülür. Temel komut satırı şu şekildedir:
IF %variable1%==%variable2% ECHO Bu kısım yürütülürveya birden fazla sözdiziminiz varsa
@ECHO OFFIF %variable1%==%variable2% (ECHO Bu kısım yürütülür. ECHO Bu da öyle.) ELSE (ECHO Değişken1 olmazsa&apost = değişken 2, bu olur. ECHO ve bu da olur.)Not: Parantezin tuhaf yerleştirilmesi, organize koda inanmadığımdan değil, bu yerlerde değilse, tüm IF snippet'inin çalışmamasıdır. Bu nedenle, IF kodunuzda herhangi bir hata varsa, bunun nedeni büyük olasılıkla parantezdir. Bu belirli toplu işi çalıştırmak için, aslında Komut İstemi'nin kendisini kullandım, böylece değişkenleri IfVariableTest.bat'ı birden çok düzenlemeye gerek kalmadan ayarlayabilirdim. zamanlar.
Adım 7: IF Komutu - Ama Ben Senden Büyüküm (2/2)
Tamam, yani güzel bir IF ifadeniz var ve değişkenlerin eşit olup olmadığını kontrol etmek güzel ve hepsi, ancak tasarıya tam olarak uymuyor. Değişken1 diğer değişkenden daha küçükse bir şeyin olmasını istiyorum! Biz programcılar için bunun basit bir görev gibi göründüğünü biliyorum. Sadece diğer tüm programlama dillerinin yaptığını yapın! Atlarınızı iyi tutun kovboy. Çok hızlı değil. Toplu iş dosyası yalnızca normal eski programlama diliniz değildir. Aptalca görünebilir, "" Batch dosyalarıyla çalışmaz.
EQU - Eşittir - ==NEQ - Eşit DeğilLSS - Daha AzGTR - BüyüktürLEQ - Küçüktür veya Eşittir GEQ - Büyüktür veya EşittirSadece bu işlenenleri ==Örnek yerine koyun
EĞER 32 GTR 3 ECHO Bu İşe Yarayacak
@ECHO OFFIF 32 GEQ 32 (ECHO 32, 32'den Büyük veya Eşittir) ELSE (ECHO 32 kesinlikle 32'ye eşittir)PAUSEIF 32 LSS 32 (ECHO 32, 32'den Küçük? Sanmıyorum.) ELSE (ECHO 32 32'den az değil. Hikayenin sonu.) DURAKLAT
Adım 8: GOTO Komutu
GOTO Komutu. Tam olarak ne diyorsa onu yapar; toplu iş dosyası komut dosyasındaki bir etikete GİDER. Bu komutu kullanmak için önce yerinde bir etiketinizin olması gerekir. Etiketler şöyle görünür:
:Etiket1Bu sadece boşluksuz bir dizi harf ve/veya rakamdan önce iki nokta üst üste işaretidir. GOTO komutu şu şekilde yapılandırılmıştır
GOTO Etiketi1İşte bu kadar kolay! Bir düşününce, bunu neden Biraz Gelişmiş Toplu İşe koymadığımdan emin değilim. Her durumda, bu komut bir toplu iş dosyasını tekrar GOTO komutunu çalıştıran bir etikete GOTO ile tekrarlamak için kullanılabilir.
@ECHO OFF:RepeatMeECHO "CTRL-C"ye basmadığınız sürece bu tekrarlanacaktır. Bu arada toplu iş dosyası gerçeği söylüyor. CTRL-C, evrensel Duraklatma ve Sonlandırma İstemidir. CTRL-S basitçe Duraklattır. Ancak pencereyi kapatmak da işe yarar. GOTO, kodunuzu da atlayabilir veya yeniden sıralayabilir.
GOTO TurnEOffGOTO MultipleGotoECHO Bu ECHO atlanacak.:MultipleGOTO 3:ENDPAUSEEXIT:1ECHO EndGOTO END:3ECHO Bu önce görüntülenecektirGOTO 2:TurnEOff@ECHO OFFGOTO MultipleGoto:2ECHO Kodda sonuncu olmasına rağmen bu ikincidir. GOTO 1Yukarıdaki kod, GOTO'nun kodda gezinme yeteneğini vurgulamak için kafa karıştırıcı bir şekilde yapılandırılmıştır.
Adım 9: > Parametre (1/2)
Komut>Dosya AdıTamam, diyelim ki belirli bir dizindeyiz. Ardından, Batch'in Temellerini okursanız, geçerli dizininizin içeriğini gösterdiğini bileceğiniz DIR Komutunu kullanırız.
C:\Kullanıcılar\Neo\>DIRnormalde çıktı
C sürücüsündeki birim HP'dir Birim Seri Numarası BC7E-E26C C:\Users\Neo2007-30-06 11:14 AM.2007-30-06 11:14 AM..2007-17-03 06:41 PM.idlerc2007-19-02 03:14 PM Kişiler2007-19-06 22:44 PM Masaüstü2007-29-06 08:47 AM Belgeler2007-19-06 10:35 AM İndirilenler 19.02.2007 03:14 PM Favoriler02/19/ 2007 03:14 PM Linkler2007-12-05 04:01 PM Müzik2007-30-06 01:20 AM Resimler2007-07-04 03:08 PM Kayıtlı Oyunlar2007-19-02 03:14 PM Aramalar2007-01-03 07:23 PM 242, 947 Test Kaydı.wma2007-19-06 10:39 Videolar2007-18-06 09:57 AM 1, 324, 574 wp_screenprint_mc.pdf2007-18-06 09:59 AM 73, 996, 533 wp_tshirt_full.mp4 4 Dosya(lar) 75, 564, 054 bayt 14 Dir(ler) 132, 927, 537, 152 bayt boşAncak, > ve ona eklersek
C:\Users\Neo\DIR>DIRContents.txtBir çıktı almıyoruz, bunun yerine, içinde Çıktı bulunan DIRContents.txt adlı yepyeni bir Metin Dosyası alıyoruz! Harika! Ama bekleyin, bir sorun var! Aynı dosyada birden fazla çıktıya sahip olmak istiyorum, ancak >'m üzerine yazmaya devam ediyor ve eklemiyor! Ben ne yaparım?
Adım 10: >> Parametre (2/2)
DIR>>DIRContents.txtDüzenli! Mükemmel Çalıştı! Bekle. Bu, bir metin dosyasına istediğim her şeyi yazabileceğim anlamına mı geliyor? bunu denemek istiyorum
Toplu İş Harika>Harika.txtNe? Bu neden işe yaramadı? Bunun nedeni, parametrenin yazdığınız herhangi bir şeyi değil, yalnızca Meşru Komutların çıktısını yazmasıdır. Ancak bu, basitçe çözülen bir sorundur. Unutmayın, parametreler Komutların Çıktısını kaydeder. Hangi komutun kontrol edebileceğimiz bir çıktısı var? Doğru! ECHO Komutanlığı
ECHO Batch Is Harika>Harika.txtECHO Bunu bildiğim için çok mutluyum.>>Harika.txtYay! Unutma. >>, Çıktıyı dosyanın en sonraki satırına ekler.
Adım 11: Örnek Uygulama
Tamam. Öyleyse hepsini bir araya getirelim! İşte size bu talimatta gösterdiğim komutları kullanarak yaptığım bazı örnek kodlar. Bu kod bir değişkene sürekli olarak 1 ekler ve sonucu süresiz olarak verir.
@ECHO OFFSET /a num=1:RepeatECHO %num%SET /a num=%num%+1GOTO TekrarlaBu kod CMD.exe'yi 5 kez başlatacak
@ECHO OFFSET /a RepeatNum=5:OpenIF %RepeatNum%==0 GOTO EndSTART CMD.exeSET /a RepeatNum=%RepeatNum%-1GOTO Open:EndBu kod, C:\Users\Neo içinde bir toplu iş dosyası oluşturacak ve onu çalıştıracaktır.
@ECHO OFFCHDIR C:\Users\NeoECHO @ECHO OFF>Hello.batECHO ECHO Merhaba!>>Hello.batECHO ECHO C Sürücünüzde I&aposm!>>Hello.batECHO PAUSE>>Hello.batC:\Users\Neo\Merhaba. yarasaDuraklatBu küçük bir oyun grubu. Sayıyı tahmin etmelisin
@ECHO OFFSET /a GuessNum=0SET /a Cevap=%RANDOM%ECHO Tahmin et hangi sayıyı düşünüyorum.:RetrySET /p Guess=IF %Guess% LSS %Answer% ECHO Numaram Daha Yüksek. IF %Guess% GTR %Answer % ECHO Numaram Daha Düşük. IF %Guess%==%Answer% GOTO ENDECHO. SET /a GuessNum=%GuessNum%+1GOTO Yeniden Dene:ENDECHO Haklısınız! Cevap %Answer%ECHO idi %GuessNum% Guesses aldı. ECHO. PAUSEVe bu, çok hoşuma gidiyor. Ancak dikkatli olmazsanız, bilgisayarınızın yeteneğine bağlı olarak oldukça hızlı bir şekilde kontrolden çıkabilir. Bu dosyanın yaptığı şey, lolnumbers adlı bir dizinde süresiz olarak numaralı metin dosyaları oluşturmasıdır. Bu metin dosyalarının her biri, lolnumbers dizininin DIR'sini içerir. Mesele şu ki, dizin metin dosyalarıyla sürekli olarak daha dolgun hale geliyor, bu nedenle ardışık her metin dosyası bir öncekinden daha büyük. Bunun sonucu, toplam boyutu her saniye daha da büyüyen bir klasördür.
@ECHO OFFSET /a num=1MKDIR lolnumbersCD lolnumbers:RestartDIR>%num%.txtSET /a num+=1GOTO Yeniden BaşlatBunlar oldukça basit kodlardır. Onlarla gönlünüzce deney yapın.
Adım 12: Sonuç: Son Notlar
Vay canına. Bu talimatta çok şey ele aldık. Bu, aslında, sonuncumdan 3 kat daha uzun. Umarım beğenirsiniz!Gitmeden önce bir kaç hatırlatma. Unutmayın:Değişken AYARLARken asla değişken ile değeri arasına boşluk koymayın. EVET:
SET değişkeni1=DeğerFazladan boşluk, değişkeninizin boş kalmasına neden olur. NO
SET değişkeni1 = DeğerAyrıca, çoklu IF'ler. Parantezleri düzgün biçimlendirmeyi unutmayın:EVET
IF 1==1 (ECHO Bir Eşittir!) ELSE (ECHO Bu programda bir yanlışlık var.)NUMARA
IF 1==1(ECHO Bir Eşittir!)ELSE(ECHO Bu programda bir yanlışlık var.)Ayrıca, yerleşik değişkenler de vardır.
%CD%%DATE%%TIME%%RANDOM%%CD% Geçerli dizine genişler. Temel olarak, ilk >%DATE% ve %TIME%'nin arkasındaki yol Tarih ve Saat'tir.%RANDOM%, 0 ile 32767 arasında rastgele bir sayı verir. Aralık değiştirilemez, sanmıyorum. Ve temelde bu! Umarım bu öğreticiyi beğenmişsinizdir, üzerinde gerçekten çok çalıştım. Umarım 10 Aylık Devamsızlığı telafi eder. Şimdi kötü haber. Ülke dışında olacağım için önümüzdeki birkaç ay içinde soruları yanıtlamakta biraz zorlanacağım. Ama bir sorunuz varsa, herhangi birine bir yorum bırakın. Bir bilgisayara erişebilirsem, cevap vereceğimden emin olabilirsiniz, ancak bunun gerekli olacağını sanmıyorum; Instructables arkadaş canlısı bir topluluktur ve dışarıdaki birinin sizin durumunuzda size yardımcı olacağından eminim. Mutlu Gruplar!
Önerilen:
En Gelişmiş El Feneri - COB LED, UV LED ve Laser Inside: 5 Adım (Resimlerle)
En Gelişmiş El Feneri - COB LED, UV LED ve Laser Inside: Piyasada aynı kullanıma sahip ve parlaklık dereceleri farklı olan birçok el feneri var, ancak birden fazla ışık türüne sahip bir el feneri hiç görmedim içinde.Bu projede 3 çeşit ışığı tek bir el fenerinde topladım, ben
Gelişmiş Çizgi Takip Robotu: 22 Adım (Resimli)
Gelişmiş Çizgi Takip Robotu: Bu, benim yaptığım ve bir süredir üzerinde çalıştığım Teensy 3.6 ve QTRX çizgi sensörünü temel alan gelişmiş bir çizgi izleyen robottur. Daha önceki çizgi izleyen robotumdan tasarım ve performansta bazı önemli gelişmeler var. T
Şimdiye Kadarki En Gelişmiş El Fenerini Nasıl Yaptım: 10 Adım (Resimlerle)
Şimdiye kadarki En Gelişmiş El Fenerini Nasıl Yaptım: PCB tasarımı benim zayıf noktam. Sık sık basit bir fikir edinirim ve onu olabildiğince karmaşık ve mükemmel bir şekilde gerçekleştirmeye karar veririm. Toz toplayan normal ampullü 4.5V el feneri a. Bu b'den gelen ışık çıkışı
Gelişmiş Veri Günlüğü Deneyleri (Python Kullanarak): 11 Adım
Gelişmiş Veri Günlüğüne İlişkin Deneyler (Python Kullanarak): Çok sayıda veri kaydı talimatı var, bu yüzden kendime ait bir günlük kaydı projesi oluşturmak istediğimde bir sürü etrafa baktım. Bazıları iyiydi, bazıları pek değil, bu yüzden daha iyi fikirlerden bazılarını alıp kendi başvurumu yapmaya karar verdim. Bu res
D4E1 Solak Kamera Yardımı. Gelişmiş Sürüm.: 7 Adım
D4E1 Solak Kamera Yardımı. Gelişmiş Sürüm.: 2012'de Annelies Rollez, Cesar Vandevelde ve Justin Couturon, Barts (Grimonprez) dijital kamerası için bir sol kamera tutacağı tasarladı. Tasarımı gözden geçirdik ve esnek bir üretim sürecinde yapılabilmesi için parametrelendirdik. Bu şekilde sol ca