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

A parancssori ablakok titkai, a vr-online - mindenki számára ingyenes e-zine
Sajnos, nálunk függetlenül számos okból kifolyólag a cmd.exe parancs shell még mindig nem veszítette el a relevanciáját. Számos rendszergazda használja azt feladataik kezelésére, az operációs rendszer egyéb eszközeinek hiányában, vagy a szokás miatt. Az egyszerűség ellenére a parancssor számos érdekes és nem ismert tulajdonsággal rendelkezik. Ebben a bejegyzésben megpróbálom elmondani Önt a Windows parancssori dokumentáció nélküli vagy kevéssé ismert jellemzőiről.

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:

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

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 parancssori ablakok titkai, a vr-online - mindenki számára ingyenes e-zine

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

Kapcsolódó cikkek