10 sfaturi pentru utilizarea script-urilor, ferestre-le pro

Îmbunătățiți scripturile Scripturile din linia de comandă sunt fișiere text simple care sunt interpretate de procesorul de comandă ca un set de comenzi care trebuie executate secvențial. Istoria scripturilor de linie de comandă a început în zori







Infrastructura IT pentru întreprinderea dvs.

Îmbunătățiți scripturile

10 sfaturi pentru utilizarea script-urilor, ferestre-le pro

Dacă este posibil, utilizați variabile de mediu

Folosind o variabilă în script, cuprindem numele variabilei între semnele procentuale (%), iar când scriptul este executat, semnele procentuale și textul dintre ele sunt înlocuite de valoarea acestei variabile. Folosirea variabilelor face ca codul scriptului să fie mai universal, deci are mai multe șanse să lucreze cu succes pe diferite computere. De exemplu, într-un script shell, nu codificați greu directorul de instalare Windows. În schimb, ar trebui să utilizați variabila SystemRoot, care va indica întotdeauna un anumit director de instalare Windows. Deci, echipa

Nu vă așteptați ca fișierele batch obișnuite pentru Command.com să funcționeze la fel de bine în Cmd.exe

În shell-ul Cmd.exe, utilizați extensia .cmd

Fișierele batch Command.com au nevoie de o extensie .bat. Cmd.exe coajă se poate utiliza, de asemenea .bat extensie, dar într-un limbaj macro mai puternic cmd.exe multe echipe sunt incompatibile cu Command.com. În acest fel. Fișierul bat scris pentru Cmd.exe poate eșua dacă utilizatorul încearcă să îl execute în Command.com (de exemplu, în Windows 98). O modalitate de a evita această problemă este de a utiliza extensia .cmd pentru scripturi. Din moment ce Command.com nu recunoaște extensia .cmd, pur și simplu nu va executa fișierul batch dacă numele său se termină în .cmd.

Asigurați-vă că sunt disponibile executabilele necesare

Dacă scriptul dvs. implică programe care nu fac parte din instalarea standard a sistemului de operare, trebuie să aveți grijă ca toate aceste programe să fie disponibile. De asemenea, ar trebui să documentați aceste dependențe în scenarii. Propun să pună la dispoziție fișierele executabile pentru a le pune în același director ca și scriptul. Apoi, pentru a le porni, se utilizează sintaxa

unde exename este numele modulului executabil pe care doriți să-l executați. sintaxa%

dp0 returnează unitatea, calea și numele fișierului scriptului curent fără ghilimele. Încheierea întregului șir în ghilimele garantează capacitatea de lucru a scriptului, chiar dacă numele fișierului sau directorul în care este localizat scriptul conține citate.

Utilizați corect ghilimele duble

Se pare că citatele duble (") sunt o sursă comună de confuzie pentru cei care scriu scripturi. Citatele duble sunt doar o modalitate de a identifica spații care conțin argumente de linie de comandă. De exemplu, o linie de comandă aparent dreaptă

dir C: Fișiere program

de fapt, dă comanda Dir două argumente: C: Program și fișiere. Pentru a implementa intenția noastră de a oferi echipei un argument C: Fișiere program (inclusiv un spațiu), trebuie să-l anexăm în citate dublă:

dir "C: Fișiere program"

Ghilimele nu fac parte din numele dosarului. Ei spun comenzii Dir că textul dintre ele este un argument.

Scripturile pentru shell suportă și parametrii liniei de comandă. Pentru a utiliza parametrii liniei de comandă a scriptului, trebuie să utilizați intrarea% n (unde n este un număr de la 0 la 9). Această înregistrare se numește parametru de înlocuire (sau pur și simplu un parametru). De exemplu, script-ul va înlocui% 1 de prima linie de comandă argument% 2 - al doilea argument, etc. Pe lângă parametrii de la% 1% 9% 0 este înlocuit cu numele scenariului,% * înlocuit întregul șir de script de comandă (cu excepția numele script.). . Menționez aici opțiunile de linie de comandă pentru că atunci când Cmd.exe înlocuiește setările de la 1% la 9% argumente în linia de comandă corespunzătoare, se lasă ghilimelele duble în cazul în care acestea sunt în argument. Concluzia evidentă este că parametrul scriptului va fi întotdeauna inclus în ghilimele dacă conține spații. Această observație se bazează pe mai multe reguli simple, urmând cu grijă aproape complet eliminarea problemei citatelor.

  • Nu utilizați ghilimele în parametrii scriptului (de la% 1 la% 9), deoarece acestea pot conține deja ghilimele. Dacă doriți să utilizați un parametru cu comanda If, utilizați caractere altele decât citate (de exemplu, bretele) pentru a evita o eroare de sintaxă. Următoarea linie va funcționa corect, chiar dacă primul parametru (% 1) conține citate:






Excepția de la această regulă este cazul în care folosim sintaxa%

n pentru a elimina ghilimelele parametrului (vezi regula următoare).

  • Nu introduceți citate în variabila de mediu. Prezența spațiilor în variabilele de mediu este permisă, iar citatele nu sunt necesare. Dacă doriți să copiați un parametru la o variabilă, utilizați sintaxa%

n (unde n este un număr de la 1 la 9), care returnează un parametru fără ghilimele. De exemplu, un șir

1
va copia primul parametru script (fără citate) la variabila DATAFILE. Singura excepție este atunci când creați text citat care va fi transmis unei alte comenzi.

  • Nu uitați, atunci când este necesar, să puneți variabilele de mediu în ghilimele. De exemplu, luați în considerare următoarele linii de script:

    Prima dintre aceste linii copiază al doilea argument al scriptului la variabila TARGET, eliminând ghilimelele. A doua linie este corectă din punct de vedere sintactic, deoarece parametrul% 1 este deja închis în ghilimele dacă conține spații, iar variabila TARGET trebuie citată deoarece poate conține spații.

    Utilizați comenzile Setlocal și Endlocal

    Comanda Setlocal copiază toate variabilele de mediu, iar comanda Endlocal restabilește toate variabilele cu valorile pe care le aveau înainte de a executa scriptul. Endlocal elimină, de asemenea, orice variabile create de script. Utilizarea ambelor echipe face script-ul mai independent și se asigură că script-ul „curata dupa un cos de gunoi“, prin restabilirea variabilelor de mediu la valorile lor inițiale și de a elimina variabile pentru a crea un script.

    De asemenea, puteți utiliza comanda Setlocal Enable Extensions pentru a afla exact ce extensii de comandă sunt incluse. Echipele de extindere - este de a îmbunătăți comenzile interne ale grupului Cmd.exe (de exemplu, dacă, de, apel), care oferă caracteristici suplimentare în comparație cu echipele command.com, care au aceleași nume. Extensiile de comandă sunt activate în mod prestabilit, dar în acele cazuri rare când sunt dezactivate, comanda Setlocal Enableextensions asigură faptul că extensiile de comandă sunt activate. Pentru mai multe informații despre extensiile de comandă, tastați Cmd /? La promptul de comandă.

    Utilizați simbolul Escape, dacă este necesar.

    Cmd.exe folosește caracterul caret (^) ca semn de anulare a valorii speciale a caracterelor shell shell. De exemplu, ampersand () este un delimiter de comandă - vă permite să puneți mai multe comenzi pe o singură linie. Dacă intenționați să folosiți ampersandul în sens obișnuit, literar, trebuie să "anulați" semnificația sa specială prin plasarea simbolului căruciorului în fața acestuia. Deci, în linie

    Echo The ^ caracterul este
    separatorul de comenzi

    caracterul ^ provoacă procesorului de comenzi să anuleze interpretarea normală a următorului caracter. Caracterele speciale sunt simbolurile () ^ |. Nu este necesar să utilizați pavilionul de anulare dacă aceste caractere apar într-un șir cotat.

    Nu utilizați comanda Exit fără comutatorul / b

    Fără / b, comanda Exit închide shell-ul de comandă curent. Dacă cineva lansează Cmd.exe și execută un script care conține comanda Exit, sesiunea shell curentă se va închide brusc. Comanda Exit / b închide scriptul curent fără a închide sesiunea shell curentă. Pentru a afla mai multe despre comanda Exit, tastați Exit /? La promptul de comandă.

    Utilizați cu prudență comanda If Errorlevel

    Comanda If Errorlevel verifică finalizarea codului de completare a ultimei execuții a comenzii. Comportamentul scriptului depinde de rezultatul verificării finalizării codului. Luați în considerare, de exemplu, următorul scenariu:

    myprogram
    Dacă se întâmplă eroare 1: Eroare

    comanda Du-te în aceste linii vor fi efectuate numai în cazul în care Myprogram.exe returnează un cod de finalizare este mai mare sau egal cu 1. Cu alte cuvinte, «Dacă ERRORLEVEL n» nu înseamnă „în cazul în care ultimul cod al programului este completat este exact egală cu n»; de fapt, această condiție înseamnă "dacă ultimul cod de finalizare a programului nu este mai mic de n". Având în vedere acest comportament, trebuie să verificați codul de completare a programului în ordine descrescătoare (de la cel mai mare la cel mai mic). Pentru a verifica valoarea specifică a codului de terminare a programului, utilizați variabila dinamică ERRORLEVEL în locul comenzii If Errorlevel. Trebuie avut în vedere faptul că comanda Error Error este diferită de variabila ERRORLEVEL din lista din Tabel. 1. Comanda If Errorlevel este compatibila cu comanda If Errorlevel de la Command.com; Variabila ERRORLEVEL este disponibilă numai în Cmd.exe.

    Luați în considerare caracteristicile comenzii Start

    Comanda Start execută un program sau o comandă în noua fereastră a consolei. Cu toate acestea, dacă încercați să rulați programul dintr-un folder care conține spații (sau dacă numele programului conține spații), comportamentul comenzii Start poate să nu corespundă așteptărilor dvs. De exemplu, următoarea comandă:

    Start «C: Program FilesMicrosoft
    OfficeOffice11Winword.exe »

    nu pornește Microsoft Word contrar așteptărilor. În schimb, comanda Start va deschide o nouă sesiune Cmd.exe, antetul ferestrei consolei care va fi un șir cotat. Acest comportament este explicat prin faptul că comanda Start utilizează prima linie în ghilimele de pe linia de comandă ca titlul ferestrei de consolă.

    Pentru a rezolva această ciudățenie, utilizați o pereche de citare pentru a specifica un antet gol, apoi tastați linia programului pe care doriți să-l începeți. Programul corect de pornire arată astfel:

    Start «» «C: Program FilesMicrosoft
    OfficeOffice11Winword.exe »

    Nu puteți anticipa totul

    Scripturile shell Cmd.exe sunt utilizate foarte extensiv. După ce ați stăpânit recomandările din acest articol, veți putea crea scenarii mai fiabile și să evitați problemele comune.

    Materiale adiționale pentru scrierea de scripturi în acces online pe site-ul Windows IT Pro / RE

    Tehnologie puternică și flexibilă, spre deosebire de oricare dintre limbile de scripting Windows PowerShell (fostă numită Monad) - unul dintre instrumentele pentru gestionarea Windows Server, lansat de Microsoft încă de la apariția VBScript. PowerShell

    Exemplu real-world În timp ce Microsoft este ocupat cu promovarea Windows PowerShell, următoarea generație de limbaj de scripting pentru Windows, administratorii de sistem și de rețea și managerii IT se concentrează mai mult pe implementarea actualului

    Cele mai recente deficiențe în capacitățile de administrare Windows Procesul de scriere a scripturilor în Windows a fost de mult timp ridiculizat din partea administratorilor UNIX. Motivul principal a fost că Windows nu are multe funcții care ar putea.







    Articole similare

    Trimiteți-le prietenilor: