Ortam Değişkenleri. set komutu ve seçenekleri için yardım
Toplu iş dosyalarının içinde, her biri içinde depolanan ortam değişkenleri (veya ortam değişkenleri) ile çalışabilirsiniz. rasgele erişim belleği, kendi benzersiz adına sahiptir ve değeri bir dizedir. Standart Ortam Değişkenleri işletim sistemi önyüklendiğinde otomatik olarak başlatılır. Bu tür değişkenler, örneğin konumu belirten WINDIR'dir. Windows dizini, geçici depolama için dizine giden yolu tanımlayan TEMP Windows dosyaları veya sistem yolunu (arama yolu) depolayan PATH, yani sistemin yürütülebilir dosyaları veya dosyaları araması gereken dizinlerin bir listesi paylaşım(Örneğin, dinamik kitaplıklar). SET komutunu kullanarak toplu iş dosyalarında kendi ortam değişkenlerinizi de bildirebilirsiniz.
Bir değişkenin değerini alma
Belirli bir ortam değişkeninin değerini almak için, değişken adını % karakterleri içine alın. Örneğin:
@ECHO KAPALI CLS REM MyVar değişkeni oluştur SET MyVar=Merhaba REM Değişkeni değiştir SET MyVar=%MyVar%! ECHO MyVar değişken değeri: %MyVar% REM MyVar değişkeni siliniyor SET MyVar= ECHO WinDir değişken değeri: %WinDir%
Böyle bir toplu iş dosyasını çalıştırdığınızda, ekranda satır görüntülenecektir.
MyVar değişken değeri: Merhaba! WinDir değişken değeri: C:\WINDOWS
Dize olarak değişken dönüşümleri
Toplu iş dosyalarındaki ortam değişkenlerini değiştirebilirsiniz. İlk olarak üzerlerine birleştirme (yapıştırma) işlemi yapılabilir. Bunu yapmak için SET komutunda yanına bağlanacak değişkenlerin değerlerini yazmanız yeterlidir. Örneğin,
SET A=Bir SET B=İki SET C=%A%%B%
Dosyada bu komutları çalıştırdıktan sonra C değişkeninin değeri "OneTwo" stringi olacaktır. Sadece bir karakter olarak algılanacağı için + işaretini birleştirme için kullanmamalısınız. Örneğin, aşağıdaki dosyayı çalıştırdıktan sonra
SET A=Bir SET B=İki SET C=A+B ECHO Değişken C=%C% SET D=%A%+%B% ECHO Değişken D=%D%
Ekranda iki satır görünecektir:
Değişken C=A+B Değişken D=Bir+İki
İkincisi, yapı kullanılarak bir ortam değişkeninden alt dizeler çıkarılabilir. %variable_name:~n1,n2% n1 sayısı, karşılık gelen ortam değişkeninin başından (n1 pozitifse) veya sonundan (n1 negatifse) ofsetini (atlanacak karakter sayısı) belirtir ve n2 sayısı, atlanacak karakter sayısıdır. (n2 pozitifse) veya değişkendeki seçilen alt diziye dahil edilmeyecek son karakterlerin sayısını (n2 negatifse) seçin. Yalnızca bir negatif -n seçeneği belirtilirse, son n karakter çıkarılacaktır. Örneğin, "09/21/2007" dizesi %DATE% değişkeninde depolanıyorsa (belirli bölgesel ayarlarla geçerli tarihin sembolik gösterimi), ardından aşağıdaki komutları yürüttükten sonra
AYAR dd1=%TARİH:~%0,2 AYAR dd2=%TARİH:~0,-% AYARLA mm=%TARİH:~-%7,2 AYARLA yyyy=%TARİH:~-4%
yeni değişkenler aşağıdaki değerlere sahip olacaktır: %dd1%=21, %dd2%=21, %mm%=09, %yyyy%=2007.
Üçüncüsü, yapıyı kullanarak alt dize değiştirme prosedürünü gerçekleştirebilirsiniz. %variable_name:s1=s2%(karşılık gelen ortam değişkeninde s1 alt dizisinin her geçtiği yerde s2 ile değiştirilen bir dizeyle sonuçlanır). Örneğin, komutları çalıştırdıktan sonra
a=123456 AYARLA b=%a:23=%99
b değişkeni "199456" dizesini depolar. s2 parametresi belirtilmezse, s1 alt dizisi çıkış dizisinden kaldırılacaktır, yani. komutu yürüttükten sonra
SET a=123456 SET b=%a:23=%
b değişkeni "1456" dizesini depolar.
Rakamlarla olduğu gibi değişkenlerle işlemler
Genişletilmiş komut işleme etkinleştirildiğinde (Windows XP'de varsayılandır), ortam değişkeni değerlerini sayı olarak ele alabilir ve bunlar üzerinde aritmetik işlem yapabilirsiniz. Bunu yapmak için /A tuşuyla SET komutunu kullanın. Komut satırı seçenekleri olarak verilen iki sayıyı toplayan ve elde edilen toplamı ekranda görüntüleyen örnek bir toplu iş dosyası add.bat aşağıda verilmiştir:
@ECHO OFF REM M Değişkeni toplamını saklayacaktır SET /A M=%1+%2 ECHO %1 ve %2'nin toplamı %M%'dir REM Değişken M'yi silin SET M=
Değişkenlerde Yerel Değişiklikler
SET komutu ile ortam değişkenlerinde yapılan tüm değişiklikler toplu iş dosyası, bu dosyanın tamamlanmasından sonra bile korunur, ancak yalnızca geçerli komut penceresi içinde geçerlidir. Bir toplu iş dosyası içindeki ortam değişkenlerinde yapılan değişiklikleri yerelleştirmek, yani tüm değişkenlerin değerlerini otomatik olarak bu dosyanın çalıştırılmasından önceki haline geri yüklemek de mümkündür. Bunun için iki komut kullanılır: SETLOCAL ve ENDLOCAL. SETLOCAL komutu bir bölgenin başlangıcını tanımlar. yerel kurulumlar Ortam Değişkenleri. Başka bir deyişle, SETLOCAL yürütüldükten sonra yapılan ortam değişiklikleri geçerli toplu iş dosyasına yerel olacaktır. Her SETLOCAL komutunun, ortam değişkenlerini önceki değerlerine geri yüklemek için karşılık gelen bir ENDLOCAL komutu olmalıdır. ENDLOCAL komutundan sonra yapılan ortam değişiklikleri artık mevcut toplu iş dosyasında yerel değildir; bu dosyanın yürütülmesi bittiğinde önceki değerleri geri yüklenmeyecektir.
Bu makalede:
- değişkenlerin tanımı
- Komut satırı değişkenleri (bat dosyası çağrı parametreleri)
- IF koşul bildirimi
- Fonksiyonlar
- Dönüş Değerlerini Kullanma (Program Çıkış Kodu İşleme)
değişkenlerin tanımı
AYARLAMAK<Имяпеременной>=<Значениепеременной>
SET ifadesi, parametrelerle çalışma yeteneğinin bir uzantısıdır. işletim sistemi. Yüzde işaretleri arasında bu ad her kullanıldığında, adı yerine değeri konulan bir değişkeni belirtir. Yani, verilirse (kullanan birçok oyun için gerekli olan bir değişken) ses kartı bilgisayar):
BLASTER'I AYARLA=A220 I5 D1 P330
daha sonra bir toplu iş dosyasında aşağıdaki yapıyı kullanırken:
ECHO %BLASTER%
ekranda "A220 I5 D1 P330" görüntülenecektir. SET deyimi ile tanımlanan değişkenler, ortam değişkenleri olarak adlandırılır ve yürütüldükten sonra DOS yeniden başlatılana kadar görülebilir (bellekte manuel olarak değiştirilmedikçe). Yani, bir toplu iş dosyasından veya programdan başka bir programda belirtildikten sonra kullanılabilir. En ünlüsü, bir dizi yol olan PATH değişkenidir. hızlı arama Dosyalar. autoexec.bat dosyasında ayarlanır.
Komut satırı değişkenleri
(bat dosyası çağrı parametreleri)
%<цифра 0-9>
Her dilde olduğu gibi dilde toplu iş dosyaları alınan değişkenleri bir bat dosyasının parametreleri olarak kullanmak mümkündür.
Toplamda, aynı anda var olan 10 bağımsız değişken olabilir. Karmaşık programlar yazmak için bu oldukça küçüktür, ancak normal iş yeterince sık ve 3-4. Bir değişkenin değeri, komut satırından karşılık gelen parametrenin değerine eşittir. %0 değişkeni, .bat dosyasının adını ve belirtilirse yolunu içerecektir. Yani, abc.bat dosyasını aşağıdaki parametrelerle çalıştırırsanız:
abc.bat ve bc def
o zaman %0 abc.bat değerini içerecektir, %1 a değerini içerecektir, %2 bc içerecektir ve %3 def içerecektir. Bu özellik, yinelenen işlemlerle uğraşırken genel toplu iş dosyaları oluşturmak için yaygın olarak kullanılır.
Komut satırından 10'dan fazla değişken almak için SHIFT komutunu kullanabilirsiniz.
SHIFT komutu, 10'dan fazla komut satırı seçeneğinin kullanılmasına izin verir, ancak önceki seçenekler buna göre kaybolur. Yani SHIFT komutu tüm değişken değerlerini bir adım sola kaydırır. Yani, %0 değişkeni daha önce %1 değişkeninde bulunan değeri içerecek ve %1 değişkeni, %2 değişkeninin kaydırmadan önceki değerini içerecektir. Fakat, bu operasyon geri alınamaz, yani değişkenleri geri kaydırmak imkansızdır.
IF koşul bildirimi
Neyse ki, komut yorumlayıcısı Modern Windows 2000 ve daha eski işletim sistemlerinin cmd.exe'si, dal yapılarında etiketli IF'lere olan ihtiyacı ortadan kaldıran komut bloklarını destekler. Komut blokları parantez içine alınır. Şuna benziyor (C/C++ girinti stilini taklit ederek):
eğer koşul (
Rem 'sonra' Şube Komutları
Rem...
) başka (
Rem 'else' Şube Komutları
Rem...
Spesifik örnek kullanım:
@Eko kapalı
setBUILDMODE=%1
eğer "%BUILDMODE%" == "" (
Echo FAIL: Bağımsız değişken gerekli ^(--debug, --release^)
Çıkış /b 1
rem İşlemi basitleştirmek için bağımsız değişkendeki tüm tireleri kaldırın
BUILDMODE=%BUILDMODE olarak ayarla:-=%
"%BUILDMODE%" == "hata ayıklama" ise (
CCFLAGS=/Od /MDd /Z7'yi ayarla
) başka (
CCFLAGS=/O2 /MD'yi ayarla
Bence onunla yaşamak zaten oldukça mümkün. Ancak, her zaman olduğu gibi, hayat göründüğü kadar kolay değildir. Bir sorun var. then ve else bloklarında kullanılan değişkenler, yürütme sırasında değil, bu bloklar yürütülmeye başlamadan önce genişletilir. Verilen örnekte, bu herhangi bir soruna neden olmaz, ancak aşağıda olacaktır:
"%BUILDMODE%" == "hata ayıklama" ise (
Echo INFO: Ortamın hata ayıklama modunu ayarlama
OPTFLAGS=/Od'u ayarla
CCFLAGS=%OPTFLAGS% /MDd /Z7'yi Ayarla
) başka (
Echo INFO: Ortamın yayın modunu ayarlama
OPTFLAGS=/O2'yi ayarla
CCFLAGS=%OPTFLAGS% /MD'yi Ayarla
İşin püf noktası, her iki blokta da OPTFLAGS değişkeninin bu bloğun yürütülmesi sırasında değiştirilmeden önce değiştirileceğidir. Buna göre, OPTFLAGS'ın bu if bloğunun yürütülmesinin başlangıcında sahip olduğu değer, CCFLAGS ile değiştirilecektir.
Bu sorun, gecikmeli değişken açılımı kullanılarak çözülür. !…! içine alınmış değişkenler %…% yerine, yalnızca doğrudan kullanım anında değerlerine genişletilecektir. Bu mod varsayılan olarak devre dışı. Bunu, cmd.exe çağrılırken /V:ON anahtarını kullanarak veya şu komutu kullanarak etkinleştirebilirsiniz:
yarasa dosyasının kendi metninde. İkinci yol bana daha uygun geliyor - birinin betiğinizi belirli bir parametreyle çalıştırmasını istemek pek havalı değil.
Bununla birlikte, önceki "yanlış" örnek şu şekilde düzeltilebilir:
setlocal etkin gecikmeli genişleme
"%BUILDMODE%" == "hata ayıklama" ise (
Echo INFO: Hata ayıklama modu ortamını ayarlama
OPTFLAGS=/Od'u ayarla
CCFLAGS=!OPTFLAGS! /MDd /Z7
) başka (
Echo INFO: Serbest bırakma modu ortamını ayarlama
OPTFLAGS=/O2'yi ayarla
CCFLAGS=!OPTFLAGS! /MD
Şimdi bu neredeyse tam teşekküllü bir if-then-else bloğu. Neredeyse, çünkü yankı komutlarından birinde bir kapanış paranteziyle karşılaşırsanız, o zaman ^ sembolüyle ondan kaçmanız gerekir, aksi takdirde ayrıştırıcının kafası karışır ...
Ancak her durumda, çılgınca sayıda etiket ve geçişten çok daha iyidir.
Fonksiyonlar
Bir yarasa dosyasında bir işlev oluşturmak mümkün müdür? Evet yapabilirsin. Üstelik bazen gerekli bile oluyor. Doğru, koşullu olarak işlevler olarak adlandırılabilir.
Bu aramanın yapıldığı yeri hatırlayarak aynı yarasa dosyasındaki bir etikete atlamanıza izin veren call komutu için özel bir sözdizimi vardır:
çağrı:etiket bağımsız değişkenleri
Bir fonksiyondan dönüş şu komutla yapılır:
/b çıkış [isteğe bağlı dönüş kodu]
/b tuşu burada çok önemlidir: onsuz işlevden değil, genel olarak komut dosyasından çıkılacaktır.
Ayrıntılar için komut satırına şunu yazın:
Arama/?
çıkış /?
İlginç bir şekilde, bu sözdizimine sahip call komutu şu özyinelemeli çağrıları destekler: otomatik oluşturma%0-%9 değişken bağımsız değişkenleri için yeni çerçeve. Bazen bu yardımcı olabilir. İşte komut dilinde özyinelemeli faktöriyel hesaplamanın klasik bir örneği:
@Eko kapalı
çağrı: faktöriyel %1
yankı %SONUÇ%
çıkış
rem Faktöriyel değeri hesaplama işlevi
giriş:
rem %1 Faktöriyelini hesaplamak istediğiniz sayı
rem çıktısı:
rem %RESULT% Faktör değeri
: faktöriyel
%1 == 0 ise (
SONUÇ=1'i ayarla
Çıkış /b
%1 == 1 ise (
SONUÇ=1'i ayarla
Çıkış /b
/a PARAM=%1 - 1 olarak ayarla
çağrı: faktöriyel %PARAM%
set /a SONUÇ=%1 * %SONUÇ%
çıkış /b
İş örneği:
> factorial.bat 10
3628800
Dönüş değerlerini kullanma
(program çıkış kodu işleniyor)
Çalışmasının sonunda herhangi bir program, işletim sistemine tamamlanma kodunu döndürür. Başarı durumunda sıfır, aksi takdirde bir hata kodu döndürmek gelenekseldir. Bazen veya daha sık olarak, bir program, bir toplu iş dosyasındaki işleyişinin bazı ayrıntılarını "öğrenebilmek" için "kasıtlı olarak" sıfır olmayan bir değer döndürür. Örneğin, program basılan tuşun kodunu döndürür ve .bat dosyası üzerinde çeşitli eylemler gerçekleştirir.
Bir toplu iş dosyası, yürütülen programın çıkış kodunu nasıl bulabilir? Bunun için ERRORLEVEL anahtar değişkeni sağlanmıştır.
Hata seviyelerine sahip bir toplu iş dosyası örneği:
@EKO KAPALI
REM prg1.exe programını çalıştırın
PRG1.EXE
REM Çıkış Kodu Analizi
EĞER ERRORLEVEL 2 GOTO FILENOTFOUND
EĞER HATA SEVİYESİ 1 GOTO YAZAR HATASı
EĞER ERRORLEVEL 0 İSE GİT ÇIKIŞ
ÇIKIŞA GİT
:DOSYA BULUNAMADI
ECHO Hatası! Dosya bulunamadı!
ÇIKIŞA GİT
:YAZIM HATASI
ECHO Yazma hatası!
ÇIKIŞA GİT
:ÇIKIŞ
ECHO Programı başarıyla tamamlandı.
ÇIKIŞA GİT
:ÇIKIŞTA
Dikkat edin - çıkış kodunun analizi sıfırdan değil, mümkün olan maksimum değerden başlar. Gerçek şu ki, böyle bir kontrol şu anlama gelir: "eğer hata seviyesi değerden büyük veya ona eşitse, o zaman ...". Yani, sıfırdan başlayarak kontrol edersek, ilk satırda herhangi bir değer doğru olacaktır, bu doğru değildir.
Bu tür programlarda en sık yapılan hata budur.
(toplu) dosyaları belirtmeden yapmanıza olanak sağlar mutlak yollar dizinlere. Örneğin, harfi bilmiyorsak sistem diski, her zaman bir değişken kullanabiliriz %sistem sürücüsü%, işletim sisteminin kurulu olduğu sürücü harfini döndürür. Ayrıca değişkenler, kodu optimize etmek için kullanılır - birçok kez tekrar eden bir parametreye (örneğin, bir kayıt defteri anahtarı) kısa bir değişken atanabilir ve kullanılabilir. Bu makale, değişkenlerle çalışmaya yönelik çeşitli tekniklerin yanı sıra yeni değişkenlerin nasıl değiştirilip yaratılacağı hakkında ayrıntılı bilgi verir. Şimdi sırayla her şey hakkında.
Ortam değişkenlerinin sınıflandırılması
Windows Yardım, iki tür ortam değişkeni arasında ayrım yapar: sistem ve yerel. Sistem değişkenleri dönüşü aynı değerler bütün kullanıcılar için. Örneğin, %sistem sürücüsü%- sistem sürücüsünün harfi ve tüm kullanıcılar için aynıdır. Ancak yerel değişkenlerin döndürdüğü değerler, oturum açan kullanıcıya göre değişir. Örneğin, %Kullanıcı profili% C:\Documents and Settings\CurrentUser döndürebilir, burada CurrentUser adıdır hesap kullanıcı
İşletim sistemindeki hangi ortam değişkenlerinin sizin için uygun olduğunu ve içinde hangi değerlerin bulunduğunu öğrenin. şu an onlara atanan ekip size yardımcı olacaktır AYARLAMAK, parametre olmadan komut satırından başlatıldı ( başlat - çalıştır - cmd - ayarla). Bu makale çerçevesinde, çeşitli klasörlere (dizinlere) giden yolu gösteren değişkenlerle ilgileniyoruz. Bazıları hakkında biraz daha aşağıda:
%SYSTEMDRIVE%|System|Windows XP /2003 işletim sisteminin kök dizinini (yani sistem kök dizini) içeren sürücünün adını döndürür.
%SYSTEMROOT%, %WINDIR%|System|Windows /2003 işletim sisteminin kök dizininin konumunu döndürür
%PATH%|Sistem|Yürütülebilir dosyalar için arama yolunu belirtir.
%PROGRAMFILES%|System|Program yükleme dizinine (Program Dosyaları) giden yolu gösterir
%COMMONPROGRAMFILES%|System|Ortak program dizininin (Program Dosyaları\Ortak Dosyalar) yolunu gösterir.
%TEMP% ve %TMP%|Sistem ve Kullanıcı|Oturum açmış kullanıcıların erişebildiği uygulamalar tarafından kullanılan varsayılan geçici klasörleri döndürür. Bazı uygulamalar TEMP değişkenini, diğerleri ise TMP değişkenini gerektirir.
%USERPROFILE%|Yerel|Geçerli kullanıcı için profil konumunu döndürür.
%ALLUSERSPROFILE%|Yerel|"Tüm Kullanıcılar" profilinin konumunu döndürür.
%CD%|Local|Geçerli klasörün yolunu döndürür.
%APPDATA%|Yerel|Uygulama verileri için varsayılan konumu döndürür.
Toplu İş Dosyalarında Değişkenleri Kullanma
Basit bir örnekle başlayalım:
KMD/PARÇA:
DEL /F /Q "%AllUsersProfile%\Başlat Menüsü\Windows Activation.lnk" DEL /F /Q "%AllUsersProfile%\Başlat Menüsü\WindowsUpdate.lnk" DEL /F /Q "%systemroot%\system32\*.scr "
Bu örnekte, değişkeni kullanarak yukarıdaki kısayolları başlat menüsünden kaldırıyorum. %AllUsersProfile% değişkenini kullanarak Windows\system32 dizininden SCR uzantılı tüm dosyaların yanı sıra %SistemKökü%. DEL / F / Q yerine, anladığınız gibi, her şey olabilir: COPY copy komutundan, gerekirse tüm komut satırı parametreleriyle ihtiyacımız olan uygulamanın kurulumunu başlatma komutuna kadar.
Tüm komutlarda özellikle "alıntılar" kullandım - bu tesadüfi değil. Boşluk içeren yollar kullanıyorsanız, değişkenler de dahil olmak üzere yolun tamamı tırnak içine alınmalıdır. Değişkenin kendisi tırnak işaretleri içermese bile, sistem tarafından ayrıştırıldıktan sonra yolda boşluklar görünebilir (örneğin, %Program dosyaları% C:\Program Dosyalarında). Her durumda, tırnak işaretleri kullanmak daha iyidir - toplu iş dosyaları için iyi bir biçimdir.
Değişkenlerinizi nasıl ayarlayabilirsiniz?
Yukarıdaki örnek, halihazırda var olan ortam değişkenlerini kullanmıştır. Muhtemelen değişken adlarını çevreleyen yüzde sembollerini fark etmişsinizdir. Bu karakterler, komut satırında veya bir toplu iş dosyasında değişken değerlerin değiştirilmesine izin vermek için gereklidir. Yüzde sembolleri, Cmd.exe'nin karakter karakter karşılaştırma yapmak yerine değişkenlerin değerlerine başvurması gerektiğini belirtir. Aşağıda nasıl çalıştığını göreceksiniz. SET komutuyla değişkenlerinizi bir toplu iş dosyasında ayarlayabilirsiniz.
SET Komutu
Aynı SET komutunu kullanarak değişkenlerinizi bir toplu iş dosyasında ayarlayabilirsiniz.
Bir değişken eklemek için komut satırına şunu girin:
kod:
değişken_adı=değer ayarla
Bir değişkeni görüntülemek için komut isteminde şunu yazın:
kod:
değişken_adı ayarla
Bir değişkeni kaldırmak için komut satırına şunu girin:
kod:
değişken_adı= ayarla
Örneğin,
kod:
SET mydir=D:\Files\Work
bir değişken tanımlar mydir, belirtilen klasöre giden yolu döndürür. Ekip hakkında daha fazla bilgiyi şuradan okuyabilirsiniz: ayarlamak/?.
Önemli Not: set komutu tarafından ayarlanan değişkenler, yalnızca ayarlandıkları komut oturumunun (aşağıya bakın) süresi boyunca geçerlidir.
Bu değişkenler, örneğin herhangi bir yol için oluşturulabilir, yalnızca her belirli durumda bir değişken atamak için bir algoritma belirlemeniz veya bulmanız gerekir. hazır örnekler veya bunlara dayalı olarak kendinizinkini yaratın. Kural olarak, bu tür değişkenler, geçerli oturumda bazı ifadeler kullanılarak toplu iş dosyaları tarafından oluşturulur.
Bir dosyada değişken atama örneği RunOnceEx.cmd ayarları kayıt defterine aktaran
KMD/PARÇA:
@echo kapalı SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx SET i=100 REG ADD %KEY% /V TITLE /D "Uygulamaları Kurma" /f REG ADD %KEY%\%i% /VE /D "WinRar 3.51" /f REG ADD %KEY%\%i% /V 1 /D "%systemdrive%\install\Software\WinRar.exe /s" /f REG ADD %KEY%\%i% /V 2 / D "REGEDIT /S %systemdrive%\install\Software\rar_set.reg /s" /f SET /A i+=1
Bu komut dosyasında, SET komutu iki değişken ayarlar - %Ben% Ve %ANAHTAR%. Lütfen yüzde sembolleri olmadan belirtildiklerine, ancak bunlara erişmek için %%'ye zaten ihtiyaç duyulduğuna dikkat edin. Değişken %ANAHTAR% kodu basitleştirmeye ve optimize etmeye yarar. Geçerli komut oturumu boyunca değişmeden kalır, bu da her seferinde koda bir kayıt defteri anahtarı ekleme ihtiyacını ortadan kaldırır. Kodda her oluştuğunda %ANAHTAR% HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx ile değiştirilecektir. Ve burada %Ben% kayıt defteri anahtarlarının sıralı numaralandırılması için kullanılır. Başlangıç değeri 100 olan değişken, her komut bloğundan sonra SET /A i+=1 komutuyla bir artırılarak 100, 101, 102 vb. Böylece çizgi
kod:
REG ADD %KEY%\%i% /V 1 /D "%systemdrive%\install\Software\WinRar.exe /s" /f
aslında böyle çalışır
kod:
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\100 /V 1 /D "C:\install\Software\WinRar.exe /s" /f
Dosya parçacığının sistem değişkenini de kullandığını unutmayın. %sistem sürücüsü%, sistem sürücü harfine karşılık gelir.
Bir CD'den uygulama yükleyen bir toplu iş dosyasında değişken atama örneği:
kod:
(C D E F G H I J K L M N O P Q R S T U V W X Y Z) içindeki %%i için, varsa yapın %%i:\WIN51 CDROM=%%i'yi ayarlayın: başlat /bekle "%CDROM%\INSTALL\DVDTools\NBRom\Nero.exe"
Bu örnek, listelenen tüm sürücüler için belirli bir dosyayı (WIN51) arar. Disklerden birinde bulunursa, ikincisine bir değişken atanır. %CD-ROM% ve ardından kurulum gerçekleşir yazılım oluşturulan değişken tarafından verilen yolu kullanarak.
Ortam Değişkenlerini Değiştirme ve Kendi Değişkenlerinizi Ekleme
Yukarıda belirtildiği gibi, değişkenlerin eylemi, ekip tarafından verilen set geçerli komut oturumuyla sınırlıdır. Geçici bir değişkenden bir sistem veya kullanıcı değişkeni almak istiyorsanız, onu kayıt defterine kaydetmeniz gerekir. Bu da çeşitli şekillerde yapılabilir.
setenv yardımcı programı
Yardımcı program komut satırından çalışır (web sitesi, indirme). Yardımcı programla çalışmak çok basittir (setenv /?).
Kullanıcı ayarları|setenv -u değişken_adı değeri
Sistem ayarları|setenv -m değişken_adı değeri
Ayarlar Varsayılan Kullanıcı|setenv -d varname değeri
Geçerli kullanıcı oturumu ayarları|setenv -v varname değeri
Örneğin, kurulum aşamasında %temp% değişkenini almanız gerekiyorsa, bunu cmdlines.txt dosyasından yapabilirsiniz, örneğin:
kod:
:: Temp klasörü oluşturuluyor ve ayarlanıyor... md %systemdrive%\Temp setenv -u Temp %systemdrive%\Temp setenv -u Tmp %systemdrive%\Temp
Yardımcı program kullanışlıdır çünkü değişken ayarlandıktan sonra hemen kullanılabilir. Neredeyse hemen - bir sonraki takım oturumunda. Geçerli oturumda kullanmak için eski tanıdık set komutunu kullanabilirsiniz:
kod:
:: #EgOrus# oluşturuluyor var set EgOrus=D:\EgOrus setenv -u EgOrus %EgOrus%
Ayarları kayıt defterine aktarınİlk girişten sonra kayıt defterinde değişiklik yaparak giderseniz, değişkenler yalnızca yeniden başlatmanın veya kullanıcı oturumunun sona ermesinin ardından "çalışmaya" başlayacaktır. Tabii ki, otomatik kurulum işlemi sırasında, istediğiniz ayarları T-12'ye aktarabilir (Kayıt Tweaks makalesine bakın) ve atlayabilirsiniz. bu sorun. Atanan değişkeni mevcut kullanıcı oturumunda kullanmayacaksanız, kayıt defterine almak da size uygun olabilir. REG dosyalarını içe aktarma sürecini tekrar açıklamayacağım, ancak belirli bir örnek kullanarak REG ADD komutunu ele alacağım.
Diyelim ki sistemde bir değişkene sahip olmakla ilgileniyorsunuz. %CD-ROM% kalıcı olarak ve CD'den uygulamaların kurulumu sırasında kurun. Yukarıdaki kodu takip ederek bir değişken tanımladıktan sonra onu sistem değişkenine atayın.
KMD/PARÇA:
(C D E F G H I J K L M N O P Q R S T U V W X Y Z) içinde %%i için, varsa yapın %%i:\WIN51 CDROM=%%i olarak ayarlayın: REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v cdrom /d %CDROM% / F
Bir WIN51 dosyası bulunduktan sonra, bulunduğu sürücüye yerel bir değişken atanır. %CD-ROM%, kayıt defterine aktarılarak hemen kalıcı bir sistem değişkeni olarak atanır. Bu yöntem, Oszone Sanja Alone konferansındaki konulardan birinde önerildi. Bu arada öğrendin. sistem değişkeni ayarlarının kayıt defterinde saklandığı yer. Kullanıcı değişkeni ayarları HKCU\Environment içinde saklanır. %PROGRAMFILES% ve %COMMONPROGRAMFILES% değişkenleri tarafından döndürülen yollar, HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion içindeki ProgramFilesDir ve CommonFilesDir ayarlarında görüntülenebilir, ancak burada değiştirilmemelidir. Program yükleme dizinleri (%SystemDrive%\Program Files dışında) bir yanıt dosyası aracılığıyla yapılandırılmalıdır.
Özet
Windows komut kabuğu (cmd.exe) çok güçlü araç sistemle çalışın. Toplu iş dosyaları, makul miktarda görevi otomatikleştirebilir, bu nedenle genellikle otomatik kurulum Pencereler. Toplu iş dosyalarında değişkenlerin ustaca kullanılması, çok çeşitli sorunları çözmenize olanak tanır. Kabukla çalışmak daha verimli hale gelir ve aynı zamanda toplu iş dosyalarının kodunu basitleştirir. Değişken kullanımının diğer örneklerini sitenin veya forumun sayfalarında bulabilirsiniz. Bu makalede kullanılan tüm örnekler, kendilerine çok teşekkür edilen OsZone.ru forum katılımcılarının komut dosyalarından alınmıştır.
terminoloji
komut kabuğu- ayrı bir yazılım Kullanıcı ve işletim sistemi arasında doğrudan iletişim sağlayan . Metin Kullanıcı arayüzü komut satırı, uygulamaların çalıştığı bir ortam sağlar ve yardımcı programlar metin arayüzü ile.
cmd.exe- girilen komutu sistemin anlayabileceği bir biçime çevirmek için Windows komut kabuğunun kullandığı bir komut yorumlayıcısı.
takım oturumu başlangıç olarak başlatılabilir cmd.exe veya bir toplu iş dosyası çalıştırarak. Başka bir deyişle, geçerli komut kabuğu oluşturulur. Buna göre, bu kabuktan çıkış (örneğin, toplu iş dosyasının sonu) komut oturumunu sonlandırır.
kullanıcı oturumu(kullanıcı oturumu), kullanıcı oturum açtığında (oturum açtığında) başlar ve kullanıcı oturumu kapattığında (oturum kapattığında) sona erer.
Değişkenler, Cmd.exe ortamını ayarlar. Yalnızca komut kabuğunun davranışını değil, aynı zamanda işletim sisteminin kendisini de belirlerler. Değişkenler, her biri benzersiz özelliklere sahip iki türe ayrılmalıdır: sistem ve yerel. İlk tip, çalışma sürecinde genel işletim sistemi ortamının davranışını belirlemenize olanak tanır. Yerel değişkenler, ortamın etkinliğini yalnızca belirli bir Cmd.exe örneğinde ayarlar. Bu, temel bir fark olarak not edilmelidir.
Sistem değişkenlerinden bahsediyor, işletim sistemine önceden yüklenmiştir ve tüm uygulamalar tarafından kullanılabilir. Bunlarda değişiklik yapmak için yönetici erişim haklarına sahip olmanız gerekir. En yaygın kullanım durumu, bir sistem başlatma görevi sağlamaktır. Belirli bir kullanıcı için böyle bir olay gerçekleştirildiğinde, yerel değişkenleri kullanma olasılığından bahsedebiliriz.
Aşağıda, önceliklerinin önemine göre (azalan sırayla) mevcut değişken sınıflarının bir listesi bulunmaktadır:
- Yerleşik sistem. Çalışma sürecinde özel dikkat gerektiren en ciddi olarak adlandırılmalıdırlar.
- Değişkenler sistem görünümü HKEY_LOCAL_MACHINE ile ilgili.
- Değişkenler yerel görünüm, HKEY_CURRENT_USER ile ilgili.
- Autoexec.bat belgesinde bulunan değişkenlerin ve ortamların tam listesi.
- Sistem başlatma betiğinde bulunan değişkenlerin ve ortamların tam listesi. Bazı durumlarda, olmayabilir.
- Yazılı bir komut dosyası veya toplu belge için etkileşimli olarak uygulanan değişkenler.
Yerel veya sistem kategorisine ait oldukça uzun bir değişken listesi vardır. Bu konuya daha fazla dikkat edilmesi gerekiyor.
Yerel değişkenler
İsim | Bilgi |
---|---|
%TÜM KULLANICI PROFİLİ% |
Tüm Kullanıcılar profilinin tam olarak nerede bulunduğu hakkında bilgi sağlar |
Programlar için varsayılan konumu sağlar |
|
Kullanılan klasörün yolunu bulmanızı sağlar |
|
Geçerli Cmd.exe örneğini çalıştırmak için kullanılan komut satırını sağlar |
|
Verilen oturumun kimliğini doğrulayan etki alanı denetleyicisinin adını sağlar |
|
Gerçek yorumlayıcı için CA seçenekleri sağlamanıza izin verir. Erişim elde etmek için Cmd.exe'yi kullanmalısınız. |
|
Kullanıcı hesapları listesine sahip bir etki alanının adını sağlar |
|
Sisteme giriş yapan kullanıcının adını verir. |
|
Geçerli kullanıcı için hesap konumunu döndürür |
Sistem değişkenleri
Geçerli komut işleyici uzantılarının sürüm numarasını sağlamanıza izin verir |
|
İşin yapıldığı cihazın adını verir. |
|
Yürütülebilir dosyanın yolunu döndürür kabuk |
|
Geçerli bilgi sağlar. /t tarihine benzer bir format kullanımının öngörüldüğüne dikkat edilmelidir. Belirtilen komutla ilgili tüm bilgiler doğrudan sitedeki ilgili bölümden alınabilir. |
|
Kullanılan son komutun hata kodunu sağlamak için kullanılır. Standart durum, sıfır olmayan bir değere sahip olmaktır. |
|
Bir disk adı sağlar iş istasyonu, kullanıcının dizini ile ilişkilendirilir. Ana dizinin konumuna göre kurulum için gerekli |
|
Kullanıcının ana dizinine giden yolu sağlar. Ana dizinin konumu hakkındaki bilgiler kullanılarak ayarlanmalıdır. |
|
Kullanıcının paylaşılan giriş dizinine bir yol sağlar. Ana dizinin konumu hakkındaki bilgiler kullanılarak ayarlanmalıdır. |
|
%NUMBER_OF_PROCESSORS% |
Belirli bir aygıtın sahip olduğu işlemci sayısını belirtir |
İşletim sisteminin hangi ada sahip olduğu hakkında bilgi iletir belirli cihaz. Bazı işletim sistemi türleri için adı görüntülemenin belirli özellikleri vardır ve bu dikkate alınmalıdır. |
|
Programları keşfetmek için arama yolunu ayarlar |
|
İşletim sistemi tarafından çalıştırılabilir olarak kabul edilen belge uzantılarının bir listesini sağlar |
|
%PROCESSOR_ARCHITECTURE% |
Belirli bir işlemcinin mimarisini almanız gerektiğinde kullanılır |
%PROCESSOR_IDENTFIER% |
İşlemci hakkında kısa bilgi verir. |
%PROCESSOR_LEVEL% |
İşlemci revizyon numarası hakkında bilgi verir |
0-32767 dahil aralığında herhangi bir tamsayı sağlar |
|
Windows XP'nin kök dizininin yazıldığı sürücünün adını sağlar |
|
İşletim sistemi sistem dizininin konumunu sağlar |
|
Bu değişkenler sistem ve kullanıcı değişkenleridir. Bu, aynı görevleri farklı durumlarda gerçekleştirmenizi sağlar. Tüm kullanıcıların kullanabileceği geçici klasörler sağlar. İçin belirli programlar TEMP veya TMP kullanmanız gerekir. |
|
Geçerli saat hakkında bilgi verir. Aynı zaman /t görüntüleme formatını kullanır. |
|
İşletim sistemi dizinine geri dönmenizi sağlar |
Ortam değişkenlerini ayarlama
Bir ortam değişkeni oluşturmak, silmek veya görüntülemek için özel set komutunu kullanın. Ayırt edici bir özellik, değişkenlerin yalnızca mevcut kabuğun ortamında ayarlanmasıdır.
Belirli bir değişkeni yayınlamak için, CS'ye yazılması öngörülmüştür:
değişken_adı ayarla
Başka bir değişken eklemek şu şekilde yapılır:
değişkenadı=değer ayarla
Kaldırma prosedürünü gerçekleştirmek için, satırı reçete etmeye değer:
değişken_adı= ayarla
Sistem, değerlerin rolünü belirtmek için mevcut karakterlerin çoğunu kullanacak şekilde ayarlanmıştır. Prodeller de buraya dahil edilebilir. Belirli karakterleri kullanmak için önce (^) yazmanız veya tırnak işaretleri içine almanız gerekir. Bu yapılmazsa, yanlış uygulama veya hata olasılığı vardır. Birkaç tane düşünmek gerekiyor basit örnekler. Yeni bir&name değişkeni oluşturmak istediğimizi varsayalım. Görünümdeki görevi uygulamak için CS'ye aşağıdakiler girilir:
varname=new^&name ayarla
Özel karakteri (^) kullanmamayı deneyebilirsiniz, ancak bu imkansız olacaktır. Nedeni ise sürekli aynı hatanın verilmesi.
Bir değişken ayarlandığında, hangi harflerin kullanıldığı önemli değildir - büyük veya küçük harf. Kayıt dikkate alınmayacaktır. Bir tane var ayırt edici özellik- değişken tam olarak girildiği gibi görüntülenecektir. Bu, isimleri yazarken ayırt etmek için farklı kayıtlar kullanırsanız, algılama görevini kolaylaştırır.
Ortam değişkenlerinde ikame
Ortam değişkenlerindeki belirli değerlerin ikamesini doğrudan CS veya komut dosyasından gerçekleştirmenin bir yolu vardır. Görevi gerçekleştirmek için yerleşimi yüzde sembolleri olarak kullanmanız önerilir. Şuna benziyor:
%değişken ismi%
Cmd.exe'nin belirli bir değişkenin değerlerine hemen erişmesi gerektiği gerçeğini belirtmesi gerekiyor. Karakter karakter karşılaştırma prosedürü gerçekleştirilmeyecektir. İkamenin kendisinin özyinelemeli olarak kabul edilmediğini akılda tutmak önemlidir. Doğrulama yalnızca bir kez gerçekleştirilir.
02/12/15 21.1KNeden dünyada böyle bir kaos var? Evet, çünkü sistemimizin yöneticisi görevlerini unutmuştu. Veya dünyamızdaki cmd komutlarının listesini kaybettiniz. Bu, mevcut düzene biraz orijinal bir bakış olsa da, yine de ihtiyacımız olan gerçeğin bir kısmını yansıtıyor: komut satırını kullanarak bilgisayarınızı kolayca temizleyebilirsiniz:
komut satırı nedir
Komut satırı, bir bilgisayarın işletim sistemini yönetmek için kullanılan en basit araçtır. Yönetim, farenin katılımı olmadan bir dizi ayrılmış komut ve metin klavyesinin bir dizi karakteri kullanılarak gerçekleştirilir ( Windows işletim sisteminde).
UNIX tabanlı sistemlerde, ile çalışırken Komut satırı fare kullanılabilir.
Bazı komutlar bize MS-DOS'tan geldi. Komut satırı aynı zamanda konsol olarak da adlandırılır. Yalnızca işletim sistemini yönetmek için değil, aynı zamanda yönetmek için de kullanılır. düzenli programlar. Çoğu zaman, en nadiren kullanılan komutlar bu tür bir komut setine dahil edilir.
Cmd kullanmanın avantajı temel komutlar minimum miktarda sistem kaynağı tüketmesidir. Ve bu, bilgisayarın tüm gücünün şu ya da bu şekilde devreye girdiği acil durumlarda önemlidir.
cmd, bir dizi komutun (komut dosyası) yürütüldüğü belirli bir sıra olan tüm toplu iş dosyalarını yürütme ve oluşturma yeteneğini uygular. Bu nedenle, belirli görevleri otomatikleştirmek için kullanılabilirler ( hesap yönetimi, veri arşivleme ve daha fazlası).
Emretmek Windows kabuğu komutları belirli işletim sistemi yardımcı programlarına ve araçlarına yönlendirmek ve yönlendirmek için Cmd.exe yorumlayıcısıdır. Konsolu yükler ve komutları sistemin anlayabileceği bir biçimde yönlendirir.
Windows işletim sisteminde komut satırıyla çalışma
Konsolu Windows'ta birkaç şekilde arayabilirsiniz:
Her iki yöntem de konsolu geçerli kullanıcı olarak başlatmayı içerir. Yani, işletim sistemindeki rolüne uygulanan tüm haklar ve kısıtlamalar ile. İçin cmd'yi çalıştır yönetici haklarıyla, Başlat menüsünde ve içinde program simgesini seçmeniz gerekir. bağlam menüsü uygun öğeyi seçin:
Yardımcı programı çalıştırdıktan sonra, alabilirsiniz arkaplan bilgisi komutlar ve bunların konsoldaki yazım biçimleri hakkında. Bunu yapmak için yardım bildirimini girin ve " Enter":
Dosyalar ve dizinlerle çalışmak için temel komutlar
En sık kullanılan komutlar şunlardır:
- RENAME - dizinleri ve dosyaları yeniden adlandırın. Komut sözdizimi:
YENİDEN ADLANDIR | REN [sürücü/yol] orijinal dosya/dizin adı | bitiş dosya adı
Örnek: RENAME C:UsershomeDesktoptost.txt test.txt
- DEL (ERASE) - dizinleri değil, yalnızca dosyaları silmek için kullanılır. Sözdizimi şöyledir:
SİL | ERASE [işleme yöntemi] [dosya adı]
Örnek: Del C:UsershomeDesktoptest.txt/P
İşleme yöntemi, bir dosyayı silerken belirli bir koşulu uygulamanıza izin veren özel bir bayraktır. Örneğimizde, "P" bayrağı, her dosyayı silmek için bir izin iletişim kutusunun görüntülenmesini sağlar:
"işleme yöntemi" parametresinin olası değerleri hakkında daha fazla bilgi için bkz. teknik döküman Windows işletim sisteminde.
- MD - belirtilen yolda bir klasör oluşturmanıza olanak sağlar. Sözdizimi:
MD [sürücü:] [yol]
Örnek:
MD C:UsershomeDesktoptest1test2
Örnek, test1 klasöründe bir test2 alt klasörü oluşturacaktır. Yolun kök klasörlerinden biri yoksa, o da oluşturulur:
- ( RMDIR) - belirtilen yoldaki belirli bir klasörü veya tüm dizinleri silin. Sözdizimi:
RD | RMDIR [işlem_anahtarı] [sürücü/yol]
Örnek:
rmdir /s C:UsershomeDesktoptest1test2
Örnek, yolda belirtilen dizin dallarının tamamının silinmesine neden olacak s bayrağını kullanır. Bu nedenle, rmdir komutunu bu işleme anahtarıyla gereksiz yere kullanmamalısınız.
Bir sonraki bölümde, cmd ağ komutlarına daha yakından bakacağız.
Ağ Komutları
Komut satırı yalnızca kontrol etmenize izin vermez dosya sistemi bilgisayar, aynı zamanda ağ oluşturma yetenekleri. Parça ağ komutları konsol dahil çok sayıda Ağı izlemek ve test etmek için operatörler. Bunlardan en alakalı olanları:
- ping - komut olasılıkları izlemek için kullanılır ağ bağlantısı PC. Uzak bilgisayar belirli sayıda paket gönderilir ve ardından onlara geri gönderilir. Paket iletim süresi ve kayıp yüzdesi dikkate alınır. Sözdizimi:
ping [-t] [-a] [-n sayısı] [-l boyutu] [-f] [-i TTL] [-v tipi] [-r sayısı] [-s sayısı] [(-j ana bilgisayar listesi | - k sunucu listesi)] [-w aralığı] [hedef_PC_adı]
Komut uygulama örneği:
ping örneği.microsoft.com
ping -w 10000 192.168.239.132
Cmd ping komutunun son örneğinde istek, belirtilen IP adresi ile hedefe gönderilir. Paketler arasındaki aralık 10.000'dir (10 sn). Varsayılan olarak, bu parametre 4000 olarak ayarlanmıştır:
- tracert - protokol aracılığıyla özel bir yankı mesajı göndererek belirtilen kaynağa giden ağ yolunu belirlemek için kullanılır
- ICMP (Kontrol Mesajı Protokolü). Komutu parametrelerle çalıştırdıktan sonra, mesaj yolunun geçtiği tüm yönlendiricilerin bir listesi görüntülenir. Listedeki ilk öğe, istenen kaynağın yanındaki ilk yönlendiricidir.
cmd komutunun izleyici sözdizimi şöyledir:
tracert [-d] [-h max_hops] [-j host_list] [-w aralığı] [target_resource_name]
Uygulama örneği:
tracert -d -h 10 microsoft.com
Örnek, belirtilen kaynağa giden bir yolu izler. Bu, komutun IP adreslerini okumak için izin almaya çalışmasını engelleyen d parametresinin kullanılması nedeniyle işlemin hızını artırır. Geçişlerin (atlamaların) sayısı, kullanılarak 10 ile sınırlandırılmıştır. set değeri parametre h. Varsayılan olarak atlama sayısı 30'dur:
kapatma [(-l|-s|-r|-a)] [-f] [-m [\PCAdı]] [-t xx] [-c "mesajlar"] [-d[u][p]: xx:yy]
Örnek:
kapatma /s /t 60 /f /l /m \191.162.1.53
60 saniye (t) sonra, belirtilen IP adresine (191.162.1.53) sahip uzak bilgisayar (m) kapatılacaktır. Bu, sizi tüm uygulamalardan ( f ) ve mevcut kullanıcı oturumundan ( l ) çıkış yapmaya zorlar.