A parancssori ablakok titkai, a vr-online - mindenki számára ingyenes e-zine

Hangjelzés a bat fájlból.
A CALL parancs belső hívása.
A Microsoft Súgó tudjuk, hogy a csapat Call - teszi a hívást egy batch fájlt egy másik, anélkül, hogy a befejezése az első fájlt, de kevesen tudják, hogy a hívás, hogy mozoghat a belső címkét az azonos cmd / bat fájlt, mint a Goto paranccsal. @ Miért szükséges ez, mert van goto? "Azt kérdezi, majd a címkék mozgatásán túl a Hívás parancsnak két jellemzője van:
- "Visszatérhet a hívás helyére egy speciális címkével: EOF.
- Átviheti az értékeket egy "alprogramba". Megmagyarázom egy példával:
@echo off
Rem Az alprogram meghívása
hívás: SQRT 2
hívja: SQRT 8
szünet
goto: EOF
rem és itt megyünk, lásd alább.
rem *** A szubrutin kezdete. ***
: SQRT
set / a outputval =% 1 *% 1
echo A% 1 gyökere% outputval%.
goto: EOF
rem nem kilép, de csak térjen vissza a hívás után
rem *** A szubrutin vége. ***
A parancsszkript végrehajtása után a következő következtetést kapjuk:

Gyönyörű, nem igaz? Egy ilyen figyelmen kívül hagyó lehetőség megmenthet egy csomó sornyi kódot, és egy időre úgy tűnhet, hogy teljes körű programozási nyelven programozunk. Igen, érdemes figyelembe venni azt a tényt is, hogy az alprogram átadhatók több érveket, majd elérni őket azonosnak kell lennie, mint az érvek a parancssor% 1% 2% 3 ... majd sorrendben.
Az ütköző karakterek a bat fájlban.
Mi a teendő, ha kezelőket vagy speciális karaktereket tartalmazó szöveget kell megjeleníteni a konzolban?
Például a kimenetet: "% TEMP%". Próbálja meg begépelni a Echo% TEMP% parancsot a parancssorban. eredmény:

A% TEMP% értékét a konzolra nyomtatták. Nem pontosan az, amire szükségünk van ... Ilyen esetekben vannak menekülési karakterek "^" és "%". Elegendő, ha a speciális karakter előtt helyettesítjük, és a tolmács meg fogja érteni, hogy pontosan a karaktert akarjuk kinyomtatni, nem pedig egy karakterláncot vagy kifejezést.
@Echo kikapcsolva
Echo enni a francia tekercseket és inni teát ^
enni többet a francia tekercsek és teát.
enni többet a francia tekercsek és teát.
enni többet a francia tekercsek és teát
Echo %% TEMP %%
szünet
eredmény:
Ahogy láthatja, minden működik, és kódot takarít meg az arcon. Annak ellenére, hogy mindent a példában dolgozott ki, óvatosabbnak kell lennie a kötegelt fájlok szűrésénél, de ez nem mindig egyenletes, ezért tesztelje az egyes parancsfájlokat.
Mi engedélyezett a kibővítés?
Általában nem akartam erről írni, hanem mert a következő példában használják, és a segítségben, hogy homályosan festett, írok.
Általában, ha változókat használnak a bat / cmd parancsfájlokban, a% változó% -ot használják, de ha a változó értéke megváltozik a hurok testében és ott olvasható, előfordulhat, hogy nem működik. Például:
%% i in (1,2,3) do (
set "var = %% i"
echo% var%
Rem Nem nyomtat semmit
)
szünet
Ha futtatja ezt a példát, a tolmács egyszerűen végrehajtja a visszhangot 3-szor paraméter nélkül. Annak érdekében, hogy minden működjön megfelelően, a fejlett parancsfeldolgozási módot kell használnia. Az enableelayedexpansion opcióval beállított setlocal, és kikapcsolódik a endlocal paranccsal. Példát fogok adni:
setlocal enabledelayedexpansion
%% i in (1,2,3) do (
set "var = %% i"
echo! var!
Rem Kimenet 1,2,3
)
szünet
Most minden a tervek szerint következtetésre jut. Észreveszem, hogy a változó ebben az esetben felkiáltójelekkel (!) Van megfogalmazva.
Dinamikus változók létrehozása a bat-fájlokban? Könnyű!
Írásakor héjprogramba adminisztrátorok, amely, bár egy kicsit programozni más programozási nyelvek (és a cmd tudható be őket egy szakaszon), van egy bizonyos kényelmetlenséget a feldolgozás a nagy adathalmazok. Végtére is, nincsenek tömbök cmd-ben! Dinamikus változók segítségével meg tudjuk oldani ezt a korlátot. Ehhez használja a parancsfeldolgozás fejlett módját.
Például van egy szöveges fájl, meg kell olvasnunk és megjelenítenünk bizonyos sorokat a képernyőn, megmutatom, hogyan kell ezt csinálni dinamikus változók használatával. Először hozzon létre egy greeka.txt fájlt a következő tartalommal:
1. Greke a folyó mentén, Látja a görög - a folyó rák.
2. Menni görögül a folyón, Látja a görög - a folyó rák.
3. Görög görög a folyón keresztül, Látja a görög - a folyó rák.
4.Hehal görög a folyó mentén, lát egy görög - a folyó rák.
5. Görög görög a folyó mentén, Látja a görög - a folyó rák.
6. Menni görögül a folyón keresztül, Látja a görög - a folyó rák.
7. Menni görög a folyón keresztül, Látja a görög - a folyó rák.
8. Menni görög a folyón keresztül, Látja a görög - a folyó rák.
9. Görög görög a folyón keresztül, Látja a görög - a folyó rák.
10. Menni görögül a folyón, Látja a görög - a folyó rák.
Ezután kezdjük el írni a szkriptet:
@echo off
setlocal enabledelayedexpansion
Speciális parancsfeldolgozási mód engedélyezése.
állítsd be i = 0
Kijelent egy kiegészítő változót.
for / F "tokenekhez = *" %% a in (greka.txt) do (
Indítsa el a vonal hurokját egy fájl vonalkeresés útján.
set / A i =! i! + 1
A segéd iterátort egyenként növeljük.
set str! i! = %% a
Valójában a dinamikus változók létrehozásának nagyon egyszerű szerkezete, a str1, str2, str3 és így tovább.
)
Nézzük meg, hogyan dolgoztuk ki a forgatókönyvet.
A ciklus kezdete
Echo Ez 10 sor. ------- ^> ^>% str10%
echo +++++++++++++++++++++++++++++++++++++++++++++
echo +++++++++++++++++++++++++++++++++++++++++++++
Echo. és ez a második ------- ^> ^>% str2%
szünet
Amint láthatja, hogy a dinamikus változók meglehetősen kényelmesek és könnyen használhatóak, segíthetnek a tömbök cseréjében és rugalmasabbá tenni a kódot.
Keressen és cserélje le a fájlokat a cmd / bat fájl segítségével.
A Linux számos rendszergazdája és Power felhasználója a cmd képességeivel megismerkedve olyan bosszantó részleteket észlel, mint a sok segédprogram hiánya a fájlok alatti részek keresésére és cseréjére.
Általában az ablakok alatt, sok eszközök kezelése húrok a fájlokat, beleértve portolták #nix rendszerek (azonos sed és supersed), de nem keres egyszerű módon ez nem egészen egyértelmű, mert a megfelelő időben ez nem feltétlenül elérhető.
Megkapott egy fájlt, amit közmondással, méretűre feltöltöttek
10 megabájt, nos ... például, hogy futtatni a szkriptet beírja a „File_str_replace.bat greka.txt Hitler a görög.” hogy a görög összes szavát helyettesítse Hitlerre. Látjuk, hogy futás után fél perccel (nem rossz egy 20 éves mamut konzol) a mi file mondás változott „Hitler lovagolt a folyón, lát Hitler - a folyó rak.Sunul Hitler a folyó kar Cancer kar Grecu - DAC”. Javíthatja a forgatókönyvet, és még szorosabbá teheti a rendszeres kifejezéseket, de ezek kis technikai részletek