Hvordan lage en batch-fil. Deaktiver og aktiver visning av kommandoer på skjermen. Opprett et nytt tekstdokument

Alle kan skrive bat-filer!

Kommandoprosessor

Sammensetningen av mange operativsystemer, inkludert de som er utviklet Microsoft Corporation, inkluderer kommandoprosessor... Dette er navnet på et program som starter utførelsen av alle slags handlinger som svar på kommandoer som er lagt inn av brukeren fra tastaturet. I utgangspunktet skal disse handlingene starte nødvendige programmer med visse parametere. Men ikke bare; videre vil vi se at noen kommandoer blir utført direkte av skallet. I utgangspunktet er dette kommandoene som tjener til å kontrollere konteksten og rekkefølgen av kommandoutførelse. Vi vil imidlertid ikke tenke for dypt på kommandoenes natur, i hvert fall ikke unødvendig. Enda viktigere er at ethvert program som er teknisk mulig å kjøre fra kommandolinjen, behandles som en kommando av skallet. Den skiller ikke mellom de "native" kommandoene som opprinnelig var innebygd i operativsystemet og programmene som ble installert på toppen av det.

Slik starter du kommandoprosessoren:

    Klikk på knappen Start... Hovedmenyen vil vises.

    Velg Kjør fra hovedmenyen. En dialogboks vil vises Lansering av programmet.

    Skriv inn strengen i Åpne-boksen cmd.

    Klikk på knappen OK... Et skallvindu vil vises.

Kommandolinje og kommandoer

Skjellvinduet ser dystert ut i sin opprinnelige form, og det er lite praktisk for de fleste å jobbe med det. Mye enklere å bruke filbehandlere med stil Norton-sjef... De gir både et middel for rask navigering gjennom filsystemet og en tidsbegrensning for å legge inn kommandoer.

For å angi kommandoen:

    Skriv inn kommandoteksten på kommandolinjen.

    Trykk på tasten Tast inn.

Kommandoprosessor og kommandoer operativsystem beskrevet i driftsdokumentasjonen for sistnevnte. Denne dokumentasjonen er delvis inneholdt i selve operativsystemet. For å få tilgang til den, bruk kommandoen hjelp... Denne kommandoen viser en liste over tilgjengelige kommandoer... For å få en beskrivelse av en spesifikk kommando, som en parameter, kommandoen hjelp navnet hennes skal angis. Kommandolinjen vist i følgende liste viser kommandobeskrivelsen til.

Hvis du prøvde å skrive inn kommandoen hjelp, har du sannsynligvis lagt merke til at resultatet av arbeidet hennes (det såkalte problemet) ikke passer på én skjerm. Det samme problemet oppstår med kommandobeskrivelsesteksten til... Den gode nyheten er at utdataene kan omdirigeres til en fil. Kommandolinjen vist i følgende liste genererer filen commands.txt som inneholder en liste over alle MS-DOS-kommandoer.

hjelp> commands.txt

For å generere en fil med en kommandobeskrivelse til, må du gi en slik kommando (du kan lage navnet på utdatafilen til hva du vil).

hjelp for> for.txt

Totalt har moderne operativsystemer til Microsoft-selskaper litt mindre enn 80 kommandoer, og det er umulig å beskrive dem i en artikkel. Her kan vi bare nevne noen få kommandoer som er nyttige for å automatisere filbehandling og vise hvordan du bruker dem. Disse kommandoene vil bli brukt i de følgende eksemplene. Du kan alltid avklare detaljene med kommando hjelp eller i referansen.

kopiere- kopiering av en eller flere filer;

del- slette en eller flere filer;

bevege seg- flytte en eller flere filer eller kataloger;

endre navn(forkortet ren) - gi nytt navn til en eller flere filer eller kataloger;

xcopy- kopiere et tre med underkataloger;

mkdir(forkortet md) - opprette en katalog;

rmdir(forkortet rd) - sletting av en katalog.

En av de generelle reglene for MS-DOS kommandosyntaks er at når du spesifiserer parametere, spesifiserer du først kilden og deretter resultatet. For eksempel hvis vi ønsker å flytte filen beer.txt fra katalogen eskeå katalogisere bord, må vi skrive inn kommandoen vist i følgende liste.

flytte boks \ beer.txt-tabell

Først hva du skal flytte, så hvor du skal flytte.

Hvis vi ønsker å gi nytt navn til filen lena.txtå lagre natasha.txt, så skal kommandoen skrives som vist nedenfor.

ren lena.txt natasha.txt

Først hva du skal gi nytt navn, deretter hva du skal gi nytt navn.

Gjeldende katalog. Absolutte og relative veier

Når du arbeider med filkommandoer, blir konseptet med gjeldende katalog ekstremt viktig. Faktum er at når vi spesifiserer en fil som en kommandoparameter, bruker vi alltid en av to mulige måter å peke på dem: enten en absolutt bane eller en relativ bane. I den fullstendige banen indikerer vi alt som starter fra disken (eller nettverksnavn datamaskin), for eksempel d: \ misha \ box \ beer.txt... Uansett hvilken katalog som er gjeldende når kommandoen legges inn, full vei vil matche den samme filen. Til relativ vei den gjeldende katalogen fungerer som et utgangspunkt. Det enkleste tilfellet for en relativ bane er et filnavn. I sammenheng med kommandoutførelse betyr det en fil med det navnet som ligger i gjeldende katalog.

Det er en betinget oppføring for å skrive den relative banen til gjeldende katalog . (punkt). For å skrive den relative banen til katalogen som inneholder gjeldende katalog, er det en betinget oppføring .. (to prikker). Kommandoen vist i følgende liste kopierer alle filer fra gjeldende katalog til katalogen nabo plassert ved siden av.

kopi *. *. \ nabo

Kommandofiler

Inntil nå, da vi ga eksempler, antok vi at vi skrev inn kommandoer manuelt hver gang. Ved behandling et stort antall filer eller systematisk utførelse av de samme kommandoene, blir det tungvint. Derfor gir kommandoprosessoren muligheten til å utføre kommandofiler. En batchfil er en tekstfil som inneholder kommandoer (eller minst én kommando). Et eksempel på en batchfil er vist i følgende liste. Prøv å gjette hva denne batchfilen gjør.

hjelp kopi> kopi.hjelp

hjelp flytte> flytte.hjelp

flytte * .help msdos-help

Hvis formålet med denne filen forblir et mysterium for deg, prøv å faktisk opprette og utføre den. Det er vanlig at batchfiler får utvidelsen flaggermus... Av den gjenkjennes filer av denne typen av kommandoprosessoren. Denne filen kan for eksempel navngis make-help.bat.

Slik kjører du en batchfil:

    Skriv inn navnet som en kommando. Etter det vil batchfilen bli utført.

I en batchfil opptar hver kommando én linje. Mer presist, det er en måte å plassere en kommando på flere påfølgende linjer, for dette, rett før hver linjemating, legg "cover"-tegnet ^ ... (Hvert omslag må være det siste tegnet på sin linje; det må ikke være mellomrom eller tabulatorer etter det). Et eksempel på en slik kommando er vist i følgende liste.

hvis det finnes disser.txt ^

kopier disser.txt ^

d: \ vitenskap \ papirer \ utkast \ kilder

Men for enkelhets skyld, for ikke å ta forbehold hver gang, vil vi anta at dette på en eller annen måte er én lang «logisk» linje.

Når en kommandofil utføres, skanner kommandoprosessoren kommandofilen fra topp til bunn fra første linje til siste og utfører kommandoene i den rekkefølgen den finner dem. Han utfører dem som en helhet som om vi skrev inn hver av dem manuelt. Generelt fordi noen kommandoer oppfører seg litt annerledes når de legges inn manuelt og når de utføres fra en batchfil.

Når vi ser fremover, la oss si at om nødvendig kan sekvensen for kommandoutførelse endres ved hjelp av kontrollkommandoer (som kan være forbundet med et slikt behov, et eget spørsmål).

Ikke forveksle gjeldende katalog med katalogen der batchfilen som kjøres, ligger. Anta at gjeldende katalog er arbeid, inneholder den katalogen verktøy og verktøykatalogen inneholder batchfiler. Du starter en av dem med kommandoen verktøy \ collect-images.bat... Så, "fra synspunktet" til denne batchfilen, vil den gjeldende katalogen fortsatt være det arbeid, men ikke verktøy.

Kommenterer batchfilen og dens utstedelse. Ekko og rem kommandoer

En batchfil er egentlig et program skrevet på språket til operativsystemskallet. Teksten til programmet er ment å være forsynt med kommentarer, slik at vi kommer tilbake til det litt senere, og ikke smertelig husker hva dette programmet er for og hvordan det er arrangert.

MS-DOS-kommandosystemet gir en kommando for å kommentere rem... Dette er en dummy-kommando som ikke innebærer noen handlinger, men lar deg skrive vilkårlig tekst på linjen etter navnet ditt. Dessuten oppfatter ikke kommandoprosessoren det som en syntaksfeil. Et eksempel på formatering av en batchfil med kommentarer er vist i følgende liste.

rem ************************************************** * ***

rem Genererer hjelpefiler

hjelp kopi> kopi.hjelp

hjelp flytte> flytte.hjelp

flytte * .help msdos-help

Legg merke til de tomme linjene som deler opp batchfilen i "avsnitt". Denne enkle teknikken gjør batchfilen mer lesbar.

Når du utfører batchfilen ovenfor, vil alle kommandoer vises på skjermen etter hvert som de utføres, noe som ikke alltid er praktisk. Utstedelse av kommandoer kan deaktiveres ved å bruke kommandoen @ekko av... Symbolet "hund" foran kommandoen ekko betyr at denne kommandoen i seg selv må utføres i "stille" modus. Vi kan like gjerne ikke bruke kommandoen ekko av, og plasser en "hund" foran hvert lag.

I mange tilfeller kreves det at kommandofilen sender ut visse meldinger til skjermen (eller til en fil). I noen tilfeller kan dette være feilmeldinger, i andre informasjonsmeldinger som forklarer brukeren av batchfilen hva som skjer for øyeblikket, noen ganger danner vi en annen nyttig fil med batchfilen. Den samme ekkokommandoen brukes til å vise meldinger. Teksten til den viste meldingen sendes til den som en parameter. Listen over den forbedrede batchfilen vises nedenfor.

rem ************************************************** * ***

rem Genererer hjelpefiler for kopierings- og flyttkommandoene

rem ************************************************** * ***

@echo Genererer hjelpefiler. Ett sekund ...

rem Genererer hjelpefiler

hjelp kopi> kopi.hjelp

hjelp flytte> flytte.hjelp

rem Opprett en katalog for å lagre hjelpefiler

rem Flytt hjelpefilene til den forberedte katalogen

flytte * .help msdos-help

ekko Ferdig!

Sende parametere til batchfilen

Anta at vi ønsker å lage en batch-fil som først genererer en hjelp med en beskrivelse av en brukerdefinert kommando, og deretter laster den inn for visning i notepad. Trikset er å fortelle den på en eller annen måte hvilken kommando vi er interessert i denne gangen neste gang batchfilen startes.

For å løse dette problemet er det gitt en parameterbehandlingsmekanisme. Det fungerer ganske enkelt. Hvis brukeren spesifiserte flere parametere ved oppstart av batchfilen, angir vi i teksten til batchfilen den første av dem med oppføringen %1 , den andre oppføringen %2 , tredje oppføring %3 etc. Vi bruker disse betegnelsene i teksten til batchfilen på omtrent samme måte som i naturlig tale med pronomen.

Teksten til kommandofilen som løser problemet vises i følgende liste. Vær oppmerksom på kommandoen hjelp... Den første parameteren i batchfilen sendes til den som parameter.

rem Vi danner en fil med en beskrivelse av kommandoen,

rem hvis navn ble sendt av parameter

help% 1> help.tmp

rem Last inn beskrivelsesfilen i Notisblokkredigering

notatblokkhjelp.tmp

Anta at vi ga denne batchfilen navnet show-help.bat... For å laste inn en kommandobeskrivelse i notisblokk, for eksempel, dir, må vi skrive inn kommandoen som følger.

show-help.bat dir

Følgende kommandofil oppretter en katalog med navnet spesifisert i den første parameteren og skriver en fil med kommandobeskrivelsesteksten spesifisert i den andre parameteren.

rem Eksempel på batchfil med to parametere

rem Opprett en katalog med navnet gitt av den første parameteren

rem Opprett en fil med en kommandobeskrivelse i den,

rem gitt som den andre parameteren

hjelp% 2>% 1 \% 2.hjelp

Hva skjer hvis brukeren, når han kjører denne batchfilen, spesifiserer ikke to, men fire parametere? Det er greit, de vil ikke forstyrre noe, de vil bare ikke bli brukt. Men hva om brukeren bare spesifiserer den første parameteren? Den andre parameteren vil være tom. Effekten vil være som følger: batchfilen vil bli utført, men som på skrivingsstedet %2 det er ingenting. Help-kommandoen vil generere en liste over alle kommandoer og plassere den i en fil med et tomt navn og filtypen .help. Hvis brukeren kjører denne filen uten å spesifisere noen parametere, så når kommandoprosessoren prøver å utføre kommandoen md(husk at det er ment å lage en katalog), vil vi motta en syntaksfeilmelding, siden md-kommandoen må ha en parameter.

Bruk av parametere skaper dermed store muligheter, men kan komplisere saken betydelig. For at kommandofilen alltid skal fungere riktig, er det nødvendig å kontrollere riktigheten av parameterne spesifisert av brukeren og på en eller annen måte svare på ufullstendige eller feil inndata. Du kan selvfølgelig ikke gjøre dette, men en batchfil som ikke fungerer korrekt, kan bryte brann, spesielt hvis den involverer sletting eller overskriving av data.

Variabler. Sett kommando

En variabel er en navngitt verdi. I programmeringslærebøker sammenlignes vanligvis en variabel med en konvolutt med et navn skrevet på. Du kan legge noe i konvolutten, for eksempel en viss sum penger - dette er verdien. Som med konvolutten, kan verdien av variabelen endres.

For å erklære en variabel og samtidig tilordne en verdi til den, bruk kommandoen sett... Et eksempel på å skrive denne kommandoen er vist i følgende liste.

For å hente verdien til en variabel, plasser navnet mellom to prosenttegn, som vist nedenfor.

rem Compiler for hjelpefiler i CHM-format

sett help_compiler = c: \ HTML Help Workshop \ hcc.exe

rem Prosjekt av hjelpefilen til "Warehouse"-modulen

set store_hpj = hjelp \ kilder \ store \ store.hpj

rem Prosjekt av hjelpefilen til "Salg"-modulen

set sales_hpj = hjelp \ kilder \ salg \ sales.hpj

rem Kompiler hjelpefiler

% help_compiler%% store_hpj%

% help_compiler%% sales_hpj%

Denne oppføringen viser hvordan variabler er nyttige.

For det første tillater de i stedet for et langt fragment (for eksempel banen til kompilatoren av hjelpefiler) å bruke et kort synonymt med det inne i batchfilen. I det minste er det praktisk.

For det andre tillater de å unngå repetisjon i teksten til batchfilen av fragmenter som kan endre seg i fremtiden. Tenk deg at vi har installert Microsoft HTML Workshop på nytt i en annen katalog. Hvis en variabel brukes i kommandofilen for å skrive banen til den, vil det være nok å korrigere bare én linje i kommandofilen, nemlig den som verdien til variabelen er tildelt help_compiler... Hvis vi skrev banen til kompilatoren hver gang den må kalles, så etter å ha endret banen, må vi korrigere hver slik linje. I det gitte eksemplet er det to av dem, men i et ekte prosjekt kan det være fem eller femten av dem med samme suksess, i henhold til antall hjelpefiler vi ønsker å kompilere. Problemet er ikke at det er vanskelig å manuelt korrigere hver linje (tross alt var det ingen som avbrøt kommandoene "kopier" og "lim inn", men at dette øker sannsynligheten for en utilsiktet feil.

Parametrene til batchfilen er også variabler, men de skiller seg fra vanlige variabler ved at verdiene deres settes når batchfilen startes. I det følgende, når vi snakker om variabler, spesielt om å jobbe med deres verdier, vil vi også huske på parametrene til batchfilen, i det minste i fravær av eksplisitte forbehold om dette.

Når du skriver batchfiler, brukes ofte følgende teknikk: flere verdier av variabler er indikert side ved side (eller alternerer dem med symboler eller strenger), for å få en ny meningsfull betydning. Et eksempel er vist i følgende liste.

Sjekke forhold og velge alternativer. If og goto-kommandoer

If-kommandoen lar deg markere i en batch-fil grupper av kommandoer som utføres eller ikke utføres, avhengig av visse forhold. Hva er den til?

Tilstandskontroll er nesten et nødvendig tiltak når du lager batchfiler som bruker parametere. Før du starter arbeidet, må batchfilen generelt sett sørge for at riktig sett med parametere sendes til den. V ellers det er stor risiko for at det blir utført feil eller til ingen nytte, og brukeren må bare gjette hva problemet er. Dessuten, hvis batchfilen sletter, flytter eller overskriver data, kan den til og med forårsake skade med feil parametere.

Følgende liste viser den allerede kjente batchfilen for kompilering av hjelpefilen. La til sjekk av den første parameteren for ikke-tom i begynnelsen av batchfilen. Vær oppmerksom på denne syntaksfunksjonen: det doble likhetstegnet brukes for sammenligningsoperasjonen. Hvis den første parameteren viser seg å ikke være tom, utløses goto-kommandoen, som "kaster" kommandoprosessoren til den angitte etiketten. V i dette tilfellet navnet på denne etiketten er kompilert. Legg merke til at der etiketten er, er navnet innledet av et kolon, men ikke i goto-kommandoen. Hvis den første parameteren er tom, går skallet til neste linje som gir en feilmelding. Og så til den neste, som kaster den helt til slutten av filen til etiketten med navnet bli ferdig.

hvis ikke "% 1" == "" må du kompilere

rem Hvis parameteren er tom, gi en feilmelding

echo hjelpefil prosjektnavn ikke spesifisert

rem og gå til slutten av batchfilen

rem til sluttetiketten

rem Dette er en etikett som heter compile

rem Nedenfor er kompileringskommandoene

rem Sti til kompilatoren for hjelpefilene

set help_compiler = "c: \ Program Files \ HTML Help Workshop \ hhc.exe"

rem Banen til katalogen der hjelpefilprosjektene er plassert

set project_path = e: \ arbeid \ prosjekter \ hjelpe-prosjekter

rem Ring kompilatoren for å behandle et spesifikt prosjekt,

rem hvis navn vi sender i den første parameteren

% help_compiler%% project_path% \% 1.hpj

rem Dette er en etikett som heter finish

La oss innse det, den foreslåtte metoden for å sjekke en parameter er ikke den mest vellykkede.

For det første, hvis brukeren feilaktig spesifiserer et navn som en parameter, ikke eksisterende fil, vil batchfilen være fornøyd med dette og vil forsøke å kompilere. En mer korrekt måte er å sjekke om en slik fil faktisk eksisterer. For dette er et spesielt ord gitt i MS-DOS-kommandospråket eksistere... Derfor er det bedre å skrive: hvis det finnes % 1.hpj må kompileres.

For det andre aktiv bruk av kommandoen gå til(såkalt ubetinget hopp) og etiketter forvirrer koden kraftig. Teknisk sett er de ikke dårlige i det hele tatt, men det er ganske upraktisk å feilsøke og vedlikeholde en batchfil skrevet i denne stilen. Derfor har programmerere lenge ansett ubetinget forgrening for å være uønsket. Nedenfor er en mer korrekt, fra synspunkt av programmeringsstil, strukturert versjon, som bruker konstruksjonen hvis … annet... Det fungerer slik: hvis betingelsen er sann, kommandoene i parentes etter hvis, og hvis falsk, så i parentes etter ellers.

rem Sjekk om parameteren er satt

hvis ikke finnes % 1.hpj (

rem Sti til kompilatoren for hjelpefilene

set help_compiler = "c: \ Program Files \ HTML Help Workshop \ hhc.exe"

rem Banen til katalogen der hjelpefilprosjektene er plassert

set project_path = e: \ arbeid \ prosjekter \ hjelpe-prosjekter

rem Ring kompilatoren for å behandle et spesifikt prosjekt,

% help_compiler%% project_path% \% 1.hpj

Her er et annet eksempel på arbeid med sjekker. Følgende batchfil oppretter en katalog med navnet hjelpe-filer(anta, for å laste ned kompilerte hjelpefiler inn i den). Dessuten, hvis en katalog med samme navn allerede eksisterer (og den inneholder sannsynligvis gamle hjelpefiler som du ikke vil miste: hva om de nye viser seg å være verre?), tildeler batchfilen den bak-utvidelsen. Men hvis katalogen hjelpe-filer.bak allerede eksisterte, sletter batchfilen den (vi antar at en sikkerhetskopi er nok for oss).

hvis det finnes help-files.bak rd help-files.bak

hvis det finnes hjelpe-filer ren hjelpe-filer hjelpe-filer.bak

Massefilbehandling. For kommando

For-kommandoen lar deg organisere utførelsen av gjentatte handlinger av samme type. Du kan bruke den til å vise tall fra én til ti, som vist i følgende liste.

for / l %% i in (1,1,10) gjør ekko %% i

Variabel Jeg kalt loopteller. På grunn av det særegne ved kommandosyntaksen til, må navnet på looptelleren være én bokstav. Dessuten, hvis vi skriver en kommandofil, må et dobbelt prosenttegn settes foran navnet på looptelleren, men hvis vi bare skriver en kommando på kommandolinjen, så en enkelt.

Logikken til dette laget er som følger. Etter ordet i området for endring av syklustelleren er indikert. V dette alternativet kommandoer er tre tall: startverdien til telleren, trinnet for telling, grenseverdien til telleren. Når du utfører en kommando, vil skallet først tildele til variabelen Jeg betydning 1 , og deretter på hvert trinn i syklusen vil øke den med 1 til det overskrider 10 ... Det vil åpenbart være ti slike trinn. Hvis vi spesifiserte tallet som telletrinn 2 , så ville løkken kjørt fem ganger. Ved hvert trinn i løkken utføres løkketeksten, skrevet etter ordet gjøre... I eksemplet som vises, er dette en ekkokommando som skriver ut gjeldende verdi av looptelleren.

Sannsynligvis kan du tenke deg en situasjon der noe slikt faktisk kreves, men vanligvis kommandoen til brukes til å iterere over og behandle filer. Jeg må si at i ganske enkle tilfeller utføres massefilbehandling ved hjelp av jokertegn. Hvis, vil vi at alle filene i gjeldende katalog skal erstatte utvidelsen .htm.html, legger vi inn kommandoen ren * .htm * .html... Men hvis det samme må gjøres ikke i én katalog, men i et katalogtre, kan du ikke klare deg uten for-kommandoen. Batchfilen nedenfor utfører denne operasjonen for alle htm-filer i nettsideunderkatalogen til gjeldende katalog. Mer presist, i hele katalogtreet som er inni nettsted.

for / r nettsted %% i in (* .htm) gjør ren %% i %% ~ ni.html

Nøkkel / r indikerer en kataloggjennomgang nettsted og alt hans indre. Hvis du ikke spesifiserer det (men da har du ikke lov til å spesifisere katalogen), vil kun filer i gjeldende katalog bli behandlet. Verdiområdet til looptelleren i denne versjonen av kommandoen er settet med alle filer med utvidelsen .htm plassert inne i en katalog (mer presist, et tre) nettsted... Ved første øyekast er oppføringen merkelig ~ ni betyr at fra verdien av variabelen Jeg bare filnavnet må utheves. MS-DOS-kommandospråket gir flere slike modifikatorer, for eksempel oppføringen ~ xi står for filtypen. Alle modifikatorer er beskrevet i kommandoreferansen til.

Hoveddelen av løkken kan bestå av flere kommandoer, omsluttet av parentes.

for / r nettsted %% i in (* .htm) do (

rem Vis filnavnet

re Gi nytt navn til filen

ren %% i %% ~ ni.html

Overfør kontrollen til en annen batchfil. Ring kommando

Det er mulig å kalle opp en annen kommandofil fra en batchfil. Dette gjøres av kommandoen anrop... Bemerkelsesverdig nok er variablene satt i den oppringende kommandofilen "synlige" for den som kalles. Omvendt, etter at den oppringte filen er ferdig med å virke og returnerer kontrollen til den som ringer, vil sistnevnte "se" variablene som er overlatt til ham av den kalte "arvet". Dette lar utvikleren av batchfilene for eksempel fortsette som følger. Hvis flere batchfiler må bruke samme verdier, for eksempel stier til noen filer, kan de flyttes til en egen batchfil, som vil fungere som en konfigurasjonsfil. Hver fungerende batch-fil vil starte med et kall til konfigurasjonen. Fordelen er at når du endrer stier, trenger du bare å gjøre endringer i én konfigurasjonsfil, og ikke til mange arbeidere.

"Config" batchfil config.bat.

rem Sti til kompilatoren for hjelpefilene

set help_compiler = "c: \ Program Files \ HTML Help Workshop \ hhc.exe"

rem Banen til katalogen der hjelpefilprosjektene er plassert

set project_path = e: \ arbeid \ prosjekter \ hjelpe-prosjekter

"Fungerende" batchfil.

rem Sette opp variabler

rem Sjekk om parameteren er satt

hvis ikke finnes % 1.hpj (

rem Hvis parameteren er tom, gi en feilmelding

echo Det finnes ikke noe slikt hjelpefilprosjekt.

rem Nedenfor er kompileringskommandoene

rem Ring kompilatoren for å behandle et spesifikt prosjekt,

rem hvis navn vi sender i den første parameteren

% help_compiler%% project_path% \% 1.hpj

Nå er det på tide å vurdere bat-kommandoer... I utgangspunktet brukes kommandoene som er lagt inn i cmd her, men det er noen som ikke er fornuftige å bruke på kommandolinjen.

Hvordan få en komplett liste over flaggermus-kommandoer

For å beskrive alle kommandoene, må du skrive hele linjen artikler, for ikke å overbelaste deg, vil vi begrense oss innenfor rammen av én artikkel og vurdere kompakt informasjon. Som du vet, er bat-filen og cmd-kommandoene de samme for å få en liste over dem eller. Skriv inn hjelpekommandoen, som på engelsk er skrevet som hjelp, trykk Enter. Som et resultat vil datamaskinen skrive alle kommandoer med en kort beskrivelse i cmd-grensesnittet.

Etter å ha gjennomgått denne listen, vil du vite mer detaljert hva en spesifikk bat-kommando er. La oss for eksempel velge for-kommandoen, for å beskrive den, skriv inn hjelp for eller for /? og klikk enter. Som et resultat vil du motta online-hjelp på kommando er det omfangsrikt, så du må trykke på hvilken som helst tast flere ganger for å gjøre deg kjent med følgende beskrivelse. Dermed kan du studere syntaksen til en bestemt kommando.

Bat-fil kommandoer

La oss nå bli kjent med kommandoene som brukes i batchfilen, med en kort beskrivelse. De skiller ikke mellom store og små bokstaver, men vi har oppført dem med store bokstaver for å hjelpe med identifikasjon.

@ Alle bat-kommandoer som utføres vises på skjermen, for å fjerne unødvendige ting, plasseres en "hund" foran kommandoen. Brukes ofte med @echo av.
settSetter variabler. For eksempel setter = c: \ vinduer her tildeler vi per bane. Du kan skrive en voluminøs verdi til en variabel og spesifisere den i et skript, noe som vil gjøre koden mer kompakt. Hvis innholdet endres, trenger du ikke endre verdiene der denne variabelen er gitt overalt.
:: En av de to metodene for å kommentere i en bat-fil uten å vise denne linjen på skjermen.
: ETIKETTENår du legger til et kolon i et ord, opprettes det en etikett som lar deg gå til ulike seksjoner kroppsskjorte. Etiketten kan ha et annet navn, LABEL er et eksempel.
ANROPBat-kommando som kaller en batchfil i en annen. Alle parametere beskrevet i en av filene kan overføres til hverandre.
VALGValgkommando.
CLSTømmer innholdet kommandotolk som vist over CLS.
EKKOViser en melding på skjermen. For eksempel "ECHO Hallo!" vil vise "Hei!" Hvis du ikke bruker @ECHO off i begynnelsen batch-fil, så vil du se banen til bat-filen og to meldinger, som er overflødig. Du kan lage en tom streng ved å skrive ECHO. med en prikk på slutten.
EXITAvslutter gjeldende batchskript.
GÅ TIL ETIKETTEBrukes til å navigere til en bestemt etikett, i dette tilfellet LABEL, og kjøre skriptet etter den.
HVISSom i bat-programmeringsspråkene, representerer if-kommandoen oppfyllelsen av en betingelse, avhengig av hvilket skript som vil følge en eller annen bane. Se hjelpen for syntaksen.
tilEn syklus som brukes til å organisere utførelsen av de samme handlingene.
PAUSEHvis du trenger å se resultatet av skriptet, men det kjører, og vinduet lukkes raskt, bruk PAUSE. Den lar deg se resultatet og fullføre skriptet ved å trykke på hvilken som helst knapp.
REMDen andre måten å kommentere på. I motsetning til :: skrives det ut på skjermen hvis det ikke er noen @ECHO off-konstruksjon.
SKIFTEBytter posisjon batch-parametere i flaggermus-filen.
STARTStarter programmer, vinduer osv. Har mange attributter (se hjelp).

Dette er base flaggermus lag. Syntaksen til noen elementer er vanskelig for nybegynnere og krever litt kunnskap. Alt bat-fil-kommandoer beskrevet ovenfor gjennomgås overfladisk for å finne ut deres formål, og den fullstendige syntaksen finner du i Windows Hjelp.

1. Kommandofil S.BAT, som gir sidevis visning av innholdet i en gitt tekstfil (med en pause etter å ha fylt hver skjerm):

HVIS /% 1 == / GÅ TIL ERR1 hvis ingen argument (filnavn) er gitt, så ERR1

HVIS IKKE FINNES% 1 GÅ TIL ERR2 - hvis fraværende gitt fil

: ERR1 Ingen argument gitt

ECHO Spesifiser filnavn

: ERR2 Fil mangler

ECHO File% 1 mangler

Mer kommando gir en side-for-side (fullskjerm) visning av innholdet i en tekstfil.

Syntaks:

MER filter leser en tekstfil med standard enhet I / O og viser innholdet med en pause hver gang skjermen er full. I dette tilfellet vises meldingen -MER- på den siste (nederste) linjen på skjermen. For uttak neste side bare trykk på hvilken som helst tast på tastaturet.

2. S.BAT-kommandofil, som legger til søkeruter for kjørbare filer til de eksisterende og viser alle etablerte ruter:

HVIS /% 1 == / GÅ TIL SLUTT

SET BANEN =% BANEN%;% 1

PATH-kommandoen brukes til å angi og vise søkestier for kjørbare filer.

PATH ...]

STI; - kansellerer alle søkeruter.

Den kjørbare filen søkes først etter i katalogen som er tildelt i henhold til spesifikasjonen, og deretter i hver spesifisert katalog.

Hvis bare kommandonavnet er angitt, da nåværende ruter Søk.

Brukseksempel:

S C: \ EDIT \ TEXT \ ME C: \ DOS

Den vurderte batchfilen fungerer bare fint hvis verdien til den globale PATH-variabelen passer på én linje på skjermen.

3. Kommandofil DEL.BAT for sletting av VAK-filer fra den spesifiserte katalogen, hvis spesifisert, eller fra arbeidskatalogen, hvis argumentet ikke er spesifisert

HVIS IKKE /% 1 == / SET # DIR =% 1 \

HVIS FINNES% # DIR% * WAK GÅ TIL DEL

ECHO Ingen VAK-filer å slette

DIR% # DIR% *. VAK

ECHO For å nekte å slette,

ECHO trykk Ctrl-Break, ellers -

EKKO hvilken som helst tast for å fortsette

DEL% # DIR% *. VAK

ECHO *** Filer slettet ***

Denne filen bruker en global variabel med unikt navn#DIR. Den tilbakestilles først med SET-kommandoen. Dette er for å holde det tomt og ikke forbli innstilt etter et tidligere anrop til DEL.BAT. Deretter, hvis argumentet er gitt, tildeles \-tegnet til det til høyre, og resultatet lagres som verdien av den globale variabelen #DIR. I påfølgende kommandoer brukes den som et prefiks til sammensatte navn på VAK-filer.

Ved å spesifisere d: som argument vil VAK-filer slettes ikke i den gjeldende, men i rotkatalogen disk d. Derfor, hvis du trenger å spesifisere gjeldende katalog, må du bruke d: ..

4. Kommandofil LEX.BAT å ringe tekstredigerer LEKSIKON med automatisk nedlasting inn i den siste av tekstfilene som tidligere ble brukt til samme formål:

HVIS /% 1 == / GÅ TIL N

Hvis du ved DOS-ledeteksten går inn

LEX C: \ TXT \ M.TXT

da vil spesifikasjonen til den spesifiserte filen bli lagret i den globale variabelen #DOC, og selve filen vil bli lastet inn i editoren. #DOC-verdien vil da bli brukt når LEXICON.EXE-filen kjøres uten LEX-argument, og sikrer at den sist angitte filen lastes inn i editoren.

5. Følgende skjema kan brukes til å automatisk svare på en forespørsel om en OS-kommando eller et program i en batchfil:

prosess

ECHO-kommandoen lager en JA-tekstfil med et svar Y. Innholdet i JA-filen mates deretter til prosessens standardinngang. Dette simulerer inntasting av svaret Y fra tastaturet. Når prosessen er fullført, slettes YES-filen. Naturligvis kan eventuelle nødvendige svar stilles inn på samme måte.

Ulempen med den beskrevne metoden er behovet for å opprette og slette en fil, noe som er tidkrevende. Du kan overvinne dette problemet ved å lage permanente flervalgstekstfiler og bruke dem i alle batchfiler.

En annen måte å automatisk legge inn et svar i en prosess er å bruke en linje som

EKKO Y | prosess

6. Batch filer for å lagre arbeidskatalogen på et bestemt punkt og gjenopprette den etter installering av en ny arbeidskatalog. For å gjøre dette kan du for eksempel opprette følgende kommandofiler i katalogen C: \ BAT

CD> C: \ BAT \ CURDIR

KOPI C: \ BAT \ CDFILE + C: \ BAT \ CUR C: \ BAT \ RETURN.BAT

CDFILE-tekstfilen inneholder "start" av CD-kommandoen. Den må formes med ett mellomrom etter CD-en og uten EOF-markøren. Kommandofilen SAV.BAT skriver spesifikasjonen til arbeidskatalogen til CUR-tekstfilen og genererer kommandofilen RETURN.BAT for å gjenopprette denne katalogen.

For enkelhets skyld bør en av søkerutene for kjørbare filer være C: \ BAT.

La arbeidskatalogen være C \ EDIT \ TEXT \ LEX. Hvis du kaller kommandofilen SAV (uten argumenter), vil kommandofilen RETURN genereres som inneholder kommandoen

CD C \ EDIT \ TEXT \ LEX

Du kan deretter endre arbeidskataloger med CD-kommandoen (men ikke med d :)-kommandoen. For å gå tilbake til LEX vil det være nok å skrive inn RETURN fra tastaturet.

Hver påfølgende kjøring av SAV-filen angrer den forrige handlingen permanent.

Den beskrevne teknikken gjør det lettere å jobbe hvis det er en hardisk forgrenet filstruktur.

7. Kommandofil F.BAT for å sikkerhetskopiere innhold hardisk til disk i stasjon A:.

ATTRIB + AC: \ *. * / S arkivfil

ECHO Sett inn formatert disk i stasjon A

ECHO og trykk deretter på hvilken som helst tast

XCOPY C: \ *. * A: / S / M / E / V

HVIS FEILNIVÅ 4 GÅ TIL LOOP

ECHO Reservasjon fullført

ATTRIB-kommandoen setter A-attributtet på alle filer. XCOPY kopierer til disk i stasjon A filstruktur fra harddisken. For alle kopierte filer slettes A-attributtet. Opptreden XCOPY-lag ender i en av følgende tilfeller:

1) disketten er full, men ikke alle filene er sikkerhetskopiert (returkode 4);

2) alle filer er reservert, ingen filer ble funnet å være kopiert, eller kommandoutførelsen ble avbrutt av Ctrl-Break (returkode henholdsvis 0, 1 og 2);

3) skjedde kritisk feil I/O (returkode 5).

I tilfeller 1 og 3 vil IF-kommandoen overføre kontrollen til LOOP-etiketten for å fortsette (gjenoppta) sikkerhetskopieringen på neste diskett. I dette tilfellet blir ikke filene som allerede er kopiert, sikkerhetskopiert, siden deres A-attributter tilbakestilles.

Hvis tilfelle 2 har oppstått, fullføres reservasjonen med utstedelse av tilsvarende melding.

Selvfølgelig kan ytterligere parsing av returkode 5 introduseres.

8. Sikkerhetskopiere alt innhold av hardt disk tar mye tid og mange disker. Derfor, når du sikkerhetskopierer på nytt, er det best å bruke / D-bryteren i XCOPY-kommandoen for å kopiere bare de filene som ble opprettet og oppdatert etter datoen for siste sikkerhetskopiering. I dette tilfellet, for riktig utvalg av filer, er det nødvendig å oppgi DOS-operasjon hele tiden med riktig dato.

I tillegg må brukeren huske eller skrive ned datoen for siste sikkerhetskopiering av filene for å indikere det i / D-bryteren. For å bli kvitt dette kan du lage følgende batchfiler:

EKKO | MER | DATO | FINN / V "Enter"> B.BAT

ATTRIB + A C: \ *. * / S

ECHO Sett inn platen i stasjon A

XCOPY C \ *. * A: / S / M / E / V / D: % 4

HVIS FEILNIVÅ 4 GÅ TIL LOOP

ECHO Reservasjon fullført

For å bruke disse filene, må du opprette en BAT-fil én gang ved å bruke kommandoen

EKKO | MER | DATO | FINN / V "Enter"> B.BAT

Denne filen vil bare inneholde en linje som ligner på følgende:

Gjeldende dato er lørdag 26-1-2009

(Gjeldende dato - lørdag 26.01.2009)

MORE-kommandoen genererer en EOL-markør når det ikke er noen tekst å vise (fra ECHO-kommandoen) og simulerer dermed å trykke på Enter-tasten som svar på en spørring for gjeldende dato med DATE-kommandoen. FIND-kommandoen fjerner den andre linjen (Skriv inn ny dato (dd-mm-åå) :) fra DATE-kommandoen.

Du kan lage en B.BAT-fil på en hvilken som helst annen måte, men innholdet må være i spesifisert form.

For å sikkerhetskopiere nye filer (opprettet på dagen for siste sikkerhetskopiering eller senere), er det nå tilstrekkelig å starte kjøringen av batchfilen D. Den kaller B.BAT-filen, som tolkes som en batchfil. Dette starter C.BAT-kommandofilen med fire argumenter (dato, er, ukedag og dato).

Det fjerde argumentet (dato) overstyrer alternativ% 4 i / D-bryteren til XCOPY-kommandoen.

Når reservasjonen er fullført, går kontrollen tilbake til D.BAT-filen og en DATE-kommando utføres for å oppdatere B.BAT-filen med gjeldende dato, dvs. dato for siste reservasjon. Derfor, etter oppstart av DATECOPY, etter en viss tidsperiode, vil sikkerhetskopieringen fortsette som forventet (alle filer vil bli kopiert med tanke på datoen i B.BAT)

I denne artikkelen vil vi vurdere slike nyttig ting hvordan " kroppsskjorte". La oss først definere hva en bat-fil er. Batch eller batch-filer er enkle tekstfiler som inneholder kommandosett ( instruksjon) tolk og ha flaggermus forlengelse eller cmd ( cmd fungerer bare på NT-operativsystemer). Du kan opprette og redigere slike filer ved å bruke vanlig notisblokk eller et annet tekstredigeringsprogram.

Nå spør du, hvorfor trenger du å kunne skrive slike baht-filer? Og hvorfor trengs de? Jeg skal prøve å forklare.

For det første brukes de for å gjøre arbeidet enklere, dvs. for eksempel må du hele tiden utføre en operasjon hver dag ( for eksempel opprette et arkiv med visse dokumenter), ved hjelp av en batchfil kan dette automatiseres, og du vil ikke lenger ta del i dette.

For det andre er disse batchfilene veldig kraftige ( med mindre du vet hvordan du skriver dem), dvs. Du kan til og med skrive et fint program ( Jeg mener med funksjonalitet). Personlig hjelper de meg mye i arbeidet mitt, og jeg glemte bare noen ting når jeg gjorde det manuelt.

La oss nå gå direkte til det grunnleggende om disse kroppsskjortene. Hvordan de er opprettet, du trenger bare å lage et enkelt tekstdokument for å åpne det og umiddelbart på fanen " Fil-> lagre som", Skriv i stedet for utvidelsen" Tekst document.txt", for eksempel " Tekstdokument .bat"Og lagre, så vi får en batchfil med .bat-utvidelsen, men den gjør ingenting ennå.

Til å begynne med vil jeg gi et eksempel på en batchfil som jeg bruker på jobben for å arkivere dokumenter.

"C: \ Program Files \ WinRAR \ winrar.exe" a -r -dh -ed -agYYYY-mm-dd E: \ arhaccounts \ d: \ accounts \ *. Doc "C: \ Program Files \ WinRAR \ winrar. exe "a -r -dh -ed -agYYYY-mm-dd E: \ arhaccounts \ d: \ accounts \ *. xls" C: \ Program Files \ WinRAR \ winrar.exe "a -r -dh -ed -agYYYY -mm-dd E: \ arhkontoer \ d: \ kontoer \ *. txt

Nå skal jeg fortelle deg litt hva denne batchfilen gjør. WinRar starter, deretter følger WinRar-kommandoene:

  • a - dette er for å legge til arkivet;
  • -r - behandle undermapper;
  • -dh - åpne delte filer;
  • -ed - ikke legg til tomme mapper;
  • ÅÅÅÅ-mm-dd - legg til i arkivnavnet dagens dato (datoformat);
  • E: \ arhaccounts \ - banen der det endelige arkivet vil bli plassert;
  • d: \ kontoer \ *.doc - bane og maske av filer som skal arkiveres.

I dette tilfellet arkiverer vi alle Word-dokumenter, Excel og tekstfiler, vi trenger ikke arkivere resten. Arkiveringen vår går til en annen disk, og vi kopierer også det resulterende arkivet til en annen datamaskin, slik at arkivene lagres på et annet kontor. Kopiering utføres over henholdsvis nettverket, datamaskinen som arkivet kopieres til må være slått på. For å gjøre dette kan du bruke følgende kommando:

Kopi E: \ arhaccounts \ *. Rar \\ namecomp \ arhiv \

Eksempler på kommandoer for bat-filer

Vurder nå grunnleggende kommandoer som du kan bruke.

Hvis du trenger å slette en fil, skriv følgende:

Del d: \ fil \ test.doc


For å slette hele katalogen, skriv:

Rd d: \ fil \

Plutselig må du slette alt fra en katalog hver gang, og bruk deretter dette:

Ekko Y | del d: \ fil \

  • del d: \ fil \ - dette er nøyaktig sletting av alle filer;
  • ekko Y | - kommandoen bekrefter slettingen fordi hvis du ikke registrerer denne kommandoen, vil du se en melding som bekrefter slettingen - "Fortsett", og du må svare på dette spørsmålet hver gang.

La oss nå se på et mer komplisert eksempel, der betingelsen allerede er oppfylt:

@echo off "C: \ Program Files \ WinRAR \ winrar.exe" x -O + -IBCK d: \ test \ test.rar d: \ test HVIS ikke EKSISTERER d: \ test \ 123.rar GÅ TIL 1 HVIS EKSISTER d: : \ test \ 123.rar GÅ TIL 2: 2 "C: \ Program Files \ WinRAR \ winrar.exe" x -O + -IBCK d: \ test \ 123.rar c: \ del d: \ test \ 123.rar : 1 del d: \ test \ test.rar slutt

Nå forklarer jeg, la oss si at du må pakke ut test.rar-arkivet, som vil inneholde mange filer, men hvis det er en 123.rar-fil, må du pakke den ut til roten av C-stasjonen, og resten av filene forblir i samme katalog urørt.

For at det skal være nødvendig med @echo off-kommandoen slik at ingenting reflekteres på skjermen ( i prinsippet, hvis du ikke trenger, kan du ikke skrive denne linjen). Deretter kjører vi Winrar og pakker ut test.rar-arkivet inn i testmappen. Så kommer tilstanden hvis i testen ( etter utpakking test.rar) vi ikke har 123.rar-filen, så kjører vi bare batchfilen går til linjen: 1 og deretter blir test.rar-filen ganske enkelt slettet av unødvendige grunner. vi har allerede pakket ut alt vi trenger. Men hvis filen 123.rar er der, går batchfilen til linje: 2, hvoretter filen 123.rar pakkes ut til roten av C-stasjonen. Med andre ord har vi betingelsen om det er en fil, så gjør det, hvis det ikke er noen fil, gjør dette. La oss si, hvis du ikke skriver betingelsen i dette eksemplet, så vil batchfilen vår gi en feilmelding når vi ikke har 123.rar-filen i denne mappen.

La oss nå vurdere et slikt eksempel, la oss si at du må flytte filer fra katalogen på disk D til en USB-flash-stasjon hver gang. Hver gang du må angi datamaskinens stasjon D, velger du ønsket mappe, velg alle filene fra den og klipp ut, og gå deretter til USB-flashstasjonen og lim inn. Ved hjelp av en batchfil gjøres dette med ett klikk ( med en betingelse om at flash-stasjonen hver gang for eksempel kjører G eller hva du har). Her er et eksempel på en slik batchfil:

Flytt "D: \ katalog \ *. Doc" G: \ catalognaflehe \

Og alle filer med doc utvidelse som er i katalogen D: \ vil bli flyttet til USB-flashstasjonen. Nå vil jeg si at i kroppsskjorter kan du bruke skript ( skript) ved å bruke Windows Scripting Host og om nødvendig, for eksempel for å vise en melding etter at filene er kopiert ( forrige eksempel) lim inn dette:

Echo var WSHShell = WScript.CreateObject ("WScript.Shell"); >% temp% \ mes.js echo WSHShell.Popup ("filer kopiert"); >>% temp% \ mes.js start% temp% \ mes.js deltree / y% temp% \ mes.js

Faktisk kan du snakke mye om å skrive batch-filer, og du kan selvfølgelig ikke passe det inn i én artikkel, her viste jeg bare prinsippene som brukes når man skriver bat-filer, så å si grunnlaget. Hvis du vil vite flere kommandoer for å skrive batchfiler, kan du enkelt se dem ved å skrive inn kommandolinjen ( Start - Kjør - cmd) hjelpekommandoen, men det er selvfølgelig ikke alle kommandoer som kan brukes i kroppsskjorter. Lykke til med å skrive BAT filer (batnikov).

Fortsettelse av emnet i artikkelen -

Når du arbeider på en datamaskin, er det ofte nødvendig å gjenta de samme DOS-kommandoene for å utføre periodisk utførte handlinger, bygge en kompleks og flernivåsekvens kjørbare kommandoer eller applikasjoner, automatiserer arbeid med applikasjoner og filer med eller uten brukeren. Operativsystemet har muligheten til å skrive flere kommandoer i en bat-fil. Samtidig, ganske enkelt ved å starte denne kommandofilen (den kalles ofte et skript, eller ganske enkelt en "batch-fil"), kan du utføre de foreskrevne kommandoene, og ved å skrive den i hendelsene Windows planlegger, kan du automatisere denne prosessen.

Funksjonsfiler av denne typen er fraværet i en hvilken som helst kode - det er bare klokkeinformasjon som leses og utføres av kommandoen DOS-prosessor, kompatibel med nesten alle versjoner av operasjonen Windows-systemer... Et av de slående eksemplene er autoexec.bat-filen, som kreves for å starte dette operativsystemet, siden det er han som konfigurerer det under oppstart.

Grunnleggende funksjoner i batchfiler

Kommandoene som bat-filen inneholder kan betinget deles inn i flere grupper i henhold til deres funksjonalitet:

Designet for visning en viss verdi, setninger, applikasjoner eller informasjon;
- å implementere lanseringen av batchdokumenter;
- å jobbe med sykluser;
- å skape forgreningsutførelse ved å bruke betingelser;
- å jobbe med applikasjoner.

Kjøring av batchfiler

Bat-filene kan kjøres forskjellige måter... Når du arbeider i gjeldende katalog, kan du ganske enkelt skrive inn filnavn med tilleggsparametere eller uten dem. I dette tilfellet vil kommandoene til bat-filene etter oppstart utføres sekvensielt etter hverandre, allerede uten brukerintervensjon.

Når en batchfil blir funnet i en annen katalog, må du spesifisere hele banen til katalogen der den er lagret i tillegg til det fulle navnet på denne filen. Filtypen kan også utelates. For eksempel er den gjeldende katalogen d: \ photo \ work, og batchfilen vera.bat, som må kjøres med resize.doc og / p parameterne, ligger i d: \ photo \ hjemmekatalogen. Deretter, for å starte filen vår, må du skrive kommandoen d: \ photo \ home \ vera resize.doc / p eller kommandoen .. \ home \ vera resize.doc / p.

Avbrudd i arbeidet

Bat-fil-kommandoene som utføres etter oppstart kan avbrytes av knappekombinasjonene +og +... Displayet vil be deg om å avbryte kjøringen av batchfilen med en melding som venter på Ja eller Nei. Hvis du skriver inn Y, vil utførelsen bli avbrutt, og den gjenværende listen med kommandoer i bat-filen vil bli ignorert. Hvis du skriver inn tegnet N, vil utførelsen fortsette med neste kommando fra listen.

Kaller opp en annen batchfil

Bat-filer kan inneholde lenker til utførelse av andre skript. Hvis du bare skriver en bat-fil i skriptets brødtekst, vil ikke kommandoene etter den bli utført, siden kontrollen overføres til en annen batch-fil og kommandoene vil bli utført fra den. Hvis det kreves retur etter lansering intern fil, så kan den kalles med CALL-kommandoen. Kommandoformatet ser slik ut: CALL batfilename [lanseringsparametere].

Parametrene som sendes til den/de påkalte batchfilen(e) er vanligvis tegnene % 1 - % 9. Når kommandoene til bat-filene er alle sekvensielt bestått, vil utførelsen av det originale skriptet fortsette fra neste linje.

Trinn for trinn utførelse

Det er tider når kommandoene til bat-filer må utføres trinnvis (med et stopp etter hver linje). Oftest er denne modusen nødvendig ved feilsøking eller testing av skript. Skrivingen av kommandoen ser slik ut: COMMAND / y / c _scriptnavn [parametere].

Når den utføres, vil en Y- eller N-forespørsel bli utstedt for hver kommando. Hvis en kommando er nødvendig, trykk Enter-tasten eller Y. Hvis du trenger å hoppe over kommandoen - trykk ESC eller N.

Deaktiver eller aktiver visning av kommandoer på skjermen

Når bat-filen startes, vises kommandoene på skjermen linje for linje før de utføres og deretter utføres. Noen ganger forårsaker dette ulemper, siden med en stor batchfil kjører kommandoer i en lang liste foran brukeren på skjermen, og noen ganger må de vises, for eksempel for dialog eller feilsøking. For å vise bat-filen til kommandoen, bruk ECHO ON-kommandoen. For å deaktivere denne modusen, skriv inn ECHO med OFF-parameteren. I dette tilfellet vil ikke alle kommandoene som er utført videre vises på skjermen lenger.

For å deaktivere utdata fra bare én linje i batchfilen til skjermen, kan du bruke @-symbolet helt i begynnelsen av denne linjen. Oftest kan dette symbolet finnes i forbindelse med @ECHO OFF-kommandoen for å forhindre at det vises på skjermen. Denne modusen brukes ofte av nettkriminelle, skaper virus basert på bat-filer eller leverer mindre og større problemer til databrukere.

Kommandoutførelsesmeldinger

Hvis det etter ECHO-kommandoen er andre tegn enn PÅ eller AV, vil de vises i hvilken som helst modus. Hvis ECHO er uten parametere, viser den tilstanden til visningsmodusen for kjørbare kommandoer - på eller av.

Hvis ønskelig, kan du til og med spille (knirke) datamaskinen ved å bruke en bat-fil. Kommandoene vist nedenfor er basert på ECHO-setningen med tillegg av spesialtegn.

Å leke lydsignal trenger å trekke seg standardkarakter med kode 7. Dette kan gjøres ved å trykke på tasten og "7" på numerisk tastatur(merket hjem).

For å forbedre lesbarheten til meldinger kan du søke ECHO kommando med parameteren "." (den plasseres umiddelbart etter kommandoen uten mellomrom) eller spesiell karakter med koden 255. På skjermen vil det se ut som en tom linje.

ECHO-kommandoen kan brukes til å vise meldinger i egen fil... Dens essens består i å omdirigere utdataene til meldinger til skriving til en fil, og ikke til monitorskjermen. Du kan bruke flaggermus til å lagre logger, spørreskjemaer og registrere hendelser. Utdatakommandoer har følgende format:

ECHO-melding >> filnavn - denne kommandoen legger til en linje på slutten av en eksisterende fil. Hvis det ikke er en slik fil i denne katalogen, så a ny fil.

ECHO message> filename - denne kommandoen oppretter en ny fil og skriver gjeldende linje til den. Hvis det er en slik fil i gjeldende katalog, vil innholdet slettes og kommandoen eller resultatet vil bli registrert.

Bruke kommentarer

For å gjøre det enklere å redigere skript, brukes REM-kommandoen. Alle kommandoer etter den bat-fil Windows ignorert når den utføres. De kan sees når du redigerer og når steg for steg... I alle andre tilfeller vil ikke kommentarer vises på skjermen.

Forsinkelseskommando i bat-fil

Noen ganger, mens du kjører en batchfil, blir det nødvendig å midlertidig stoppe utføringen av kommandoer, for eksempel for å vente på brukerens reaksjon, for å øke tiden for lesing lang melding, for å sette inn en plate, bekrefte tilstedeværelsen av en bruker, eller for å feilsøke en batchfil. Forsinkelseskommandoen i bat-filen skrives som PAUSE uten parametere. I dette tilfellet vil displayet vise en melding som "Trykk på hvilken som helst tast for å fortsette", og skriptet vil bli satt på pause til tastaturknappen trykkes. Hvis kombinasjonen trykkes +eller +, så vil systemet tolke det som en nedleggelse kjørbar fil og vil vise en forespørsel om å bekrefte fullføringen av arbeidet: "Avslutte utførelsen av batchfilen? (J/N) ". Hvis du trykker på Y-tasten, vil skriptet bli avbrutt på dette tidspunktet og alle gjenværende utestående kommandoer vil bli ignorert. Hvis du trykker på N, fortsetter kjøringen med neste kommando. Når den er satt på pause, trykker du på andre alfanumeriske taster, så vel som "Mellomrom" og "Enter", vil kjøringen av den kjørbare filen fortsette med neste kommando.

filliste

For sekvensiell kjøring av flere filer fra listen som ligger i samme katalog, kan du også bruke en bat-fil. Kommandoene "Kjør etter navn" og "Kjør etter filtype" kan ofte hjelpe til med å automatisere dokumentbehandling, for eksempel sortering av e-postvedlegg. De er forskjellige i parametere for FOR-kommandoen. Formatet for å skrive det er vist nedenfor:

FOR% x IN (liste over filer) DO kommando, hvor:

X - et hvilket som helst tegn, bortsett fra tall fra 0 til 9;

Liste - mellomromseparerte filnavn eller navnet på en enkelt fil; i dette tilfellet kan du bruke spesialtegnene "?" og "*" for å erstatte fra ett til flere tegn i filnavnet;

Kommando - en hvilken som helst DOS-kommando eller et annet program enn FOR; hvis nødvendig bruker FOR, så må du spesifisere %% x i stedet for % x.

Når du bruker denne kommandoen til å skrive bat-filer, må du ta hensyn til at navn i DOS-programmer har en begrensning på lengden på navnet. For å bytte FOR-kommandoen til å arbeide med lange navn filer, må du ikke glemme å kjøre LFNFOR ON-kommandoen før den for å aktivere operasjonen med lange navn og LFNFOR OFF for å deaktivere den og gå tilbake til standard fillengde.

Mange funksjoner med programmer, som å sammenligne filer med visse typer utvidelser i en katalog med filer av samme type fra en annen katalog, kopiere alle filene i gjeldende katalog til en annen, sekvensiell kjøring av filer med utvidelser av en bestemt type og navn som begynner med tall kan gjøres med bare én kommando som legges inn i bat-filen. Lanseringen av programmet kan kombineres med brukerforespørsler, noe som gjør det enklere å jobbe med data.

Overganger i bat-filer

For å gjøre det lettere å kontrollere rekkefølgen på utsendelseskommandoer i bat-filer, bruker de ofte hoppkommandoer og etiketter som disse overgangene gjøres langs.
En etikett er en hvilken som helst linje i en kjørbar fil som begynner med et kolon. Etikettnavnet er tegnsettet etter kolon til slutten av linjen eller opp til første mellomrom, hvoretter resten av linjen ignoreres, som kan brukes som kommentar til hoppetiketten.

Hoppkommandoen staves GOTO med navnet på etiketten atskilt med et mellomrom. Hvis det ikke er noen parameter eller navnet på etiketten i kommandofilen ikke blir funnet, slutter skriptet å fungere på denne kommandoen. Eksempel:

REM (kjør nødvendige kommandoer).

I dette eksemplet hopper sekvensiell kjøring av batchfilen, når GOTO zzz, til etiketten: zzz og fortsetter med REM, og ignorerer alt mellom hoppkommandoen og den spesifiserte etiketten.

Bruke betingelser når du arbeider med bat-filer

Bat-fil kan eller ikke kan utføre kommandoer avhengig av ulike forhold hvis den bruker en IF-hendelsessjekk. Formatet til denne kommandoen er "IF condition-kommando".

Tilstanden er representert av forskjellige varianter av uttrykk:

FEILNIVÅ-nummer - i tilfellet det forrige kjørbare programmet endte med en utgangskode lik den spesifiserte numerisk verdi eller mer, vil tilstanden være sann.

LINJE 1 == LINJE 2 - i tilfelle fullstendig samsvar mellom linjene, blir betingelsen sann. I stedet for strenger, kan du erstatte tegnene% 0 -% 9, så vil parametrene til kommandofilen sammenlignes.

EXIST - filnavn - if spesifisert fil eksisterer, så er betingelsen sann.

IKKE - tilstand - hvis spesifisert tilstand usann, vil utdataene fra kommandoen motta en sann verdi.

Kommandoer brukt i bat-filer

Hvis du klikker på "Start"-knappen og kjører kommandolinje(cmd), så kan du se at alt som er satt inn i bat-filen kan brukes som et verktøy for feilsøking, som en assistent, et program for å få informasjon om kommandoer. For å gjøre dette, kan du ganske enkelt skrive HELP. I dette tilfellet en liste over kommandoer med korte beskrivelser til dem. For mer detaljert informasjon du kan skrive inn HJELP med navnet på kommandoen du ønsker.

Bruke bat-filer ved sikkerhetskopiering av data

Batchfiler gjør livet mye enklere systemadministratorer når du utfører daglig arbeid. De vanligste bruksområdene for disse er opprettelse, sletting, nytt navn og mer. Alt dette er basert på bruken av kommandoen COPY bat-file. Du kan for eksempel lage et program som lager arkivkopier av dokumenter fra en valgt mappe med brukerdata i visse formater, unntatt for eksempel store mediefiler, gir en sikkerhetskopi i en mappe med brukerens navn og kaller den "File_copy_Command. flaggermus". Etter det er det nødvendig å sikre lanseringen i Viss tid ved å bruke den innebygde planleggeren eller av selve programmet og dermed sikre sikkerheten til brukerdata.