Hvordan skrive bat-filer. Hvordan lage en flaggermus-fil

Folk som er kjent med begrepet batchfil vet at BAT-filer kan forenkle livet betydelig og spare tid hvis du vet hvordan du skriver og bruker dem riktig. I denne artikkelen vil jeg snakke om hvordan du lager BAT-filer og introduserer deg til vanlige feil som vanligvis oppstår når du skriver dem.

Det er veldig enkelt å lage en BAT-fil. Bare åpne Notisblokk og lagre et blankt ark med filtypen .bat, velg alternativet Lagre som... og skriv i Filnavn-feltet noe som slutter på .bat, for eksempel test.bat.
Spesifiser filtypen som i skjermbildet nedenfor - Alle filer. Lagre og motta en BAT-fil.

Du kan redigere BAT-filen i Notisblokk eller et annet tekstredigeringsprogram som fokuserer på å jobbe med kode.

La oss nå gå direkte til praktisk informasjon. Mange mennesker på Internett leter etter svar på spørsmålet: Hvordan håndtere mellomrom i BAT-filer? . I baner til mapper og kjørbare filer forårsaker tilstedeværelsen av et mellomrom en feil. Det vanligste svaret er: Sett banen i anførselstegn. Og dette svaret er ikke riktig. Riktignok vil noen skumme i munnen og påstå at det fungerer. Så, to hvorfor dukket opp - hvorfor det ikke er sant og hvorfor noen vil være det.

På Windows (så vel som på UNIX) registreres programmer som er installert på systemet tilsvarende av systemet. Derfor kan noen av de installerte programmene startes med én enkel kommando fra en BAT-fil eller fra Kjør-appleten i Start-panelet. Et slikt program er Firefox:

start firefox

Hvis du etter denne kommandoen skriver banen til den kjørbare filen, skjer følgende: Firefox-nettleseren starter og prøver å behandle forespørselen, det vil si filen hvis bane er spesifisert. Det vil si hvis du spesifiserer følgende:

start firefox C:\Program Files\Mozilla Firefox\firefox.exe

Nettleseren åpnes, uansett hva den sier etter start av firefox. Derfor vil noen kamerater forsikre at alt fungerer utmerket. Men hvis du tar et bærbart program, vil situasjonen være en helt annen. La oss ta Filezilla ftp-klienten som et eksempel. Siden systemet ikke vet om programmet, linjen ovenfor

start filezilla

vil ikke fungere. For å kjøre et program som er ukjent for systemet, må du spesifisere banen til det:

start D:\FileZilla\FileZilla.exe

Lange navn i bat-filer

La oss nå snakke om stier og rom. Den første måten å unngå dette problemet på er å bruke et kort navn.

start C:\Program Files\Sound Club\scw.exe

I eksemplet er det to navn med mellomrom. La oss erstatte dem med korte. Reglene for å lage korte navn er som følger: det korte navnet bruker de seks første tegnene i navnet, unntatt mellomrom, etter navnet vises serienummeret til mappen med symbolet ~ . Siden Program Files og Sound Club-mappene mine er enkeltstående, vil det se slik ut:

Programfiler - Progra~1 Sound Club - SoundC~1 start C:\Progra~1 \SoundC~1 \scw.exe

Hvis det er to mapper i nærheten, for eksempel Sound Club og Sound Clown, må du følge reglene, i eksemplet ovenfor må du spesifisere SoundC~2, siden Sound Club i dette tilfellet vil være det andre navnet (navn telles i alfabetisk rekkefølge).

Men denne metoden er upraktisk fordi du må angi serienumre. Situasjonen med Programfiler er mer eller mindre normal. Få mennesker vil finne to lignende mapper på systemstasjonen. Men hvis du bestemmer deg for å installere flere Mozilla-produkter på datamaskinen din. Du vil ende opp med flere mapper, for eksempel:

Mozilla Firefox Mozilla Thunderbird Mozilla Sunbird

Korte navn for dem vil være

Mozill~1 Mozill~2 Mozill~3

Tenk deg nå at du skrev en BAT-fil som nevner disse programmene. Hvis du avinstallerer Firefox, vil ikke de gjenværende oppføringene lenger fungere, og hvis du avinstallerer Thunderbird, vil oppføringen for Sunbird ikke lenger fungere. Kort sagt, metoden med korte navn er ikke vår måte.

Mellomrom og anførselstegn i bat-filer

Sitater fungerer faktisk, men ikke på de måtene som vanligvis anbefales. Følgende anbefales vanligvis:

start "C:\Program Files\Sound Club\scw.exe"

Så kommandoen vil ikke fungere, for hvis du ser på hjelpen for den (start /? ), vil du se følgende i hjelpen:

START ["header"] [kommando/program] [parametere]

Som du kan se, er den første parameteren vindustittelen, og den står i anførselstegn. Denne parameteren er valgfri, men det anbefales fortsatt å spesifisere den () for å unngå feil når du utfører kommandoen. Du trenger ikke å skrive noe inne i sitatene. Det vil bli slik:

start "" "C:\Program Files\Sound Club\scw.exe"

Alternativet for å omslutte alle navn med mellomrom separat i anførselstegn vil også fungere:

start C:\"Program Files"\"Sound Club"\scw.exe

Men i noen tilfeller fungerer ingen av de ovennevnte. I slike tilfeller kan jeg anbefale å bruke cd-kommandoen. Gå til systempartisjonen, bruk deretter cd til Program Files-mappen og kjør programmet (start):

%SystemDrive% cd \Program Files\Sound Club\ start scw.exe

Jeg tror denne metoden vil fungere overalt. Nå et par viktige punkter. La oss si at du har opprettet en batchfil som starter tre programmer, og at du midlertidig må ekskludere lanseringen av ett av de tre. Dette kan gjøres ved å slette linjen eller kommentere den ut. Den første metoden er vandalisme, og den andre, se nedenfor.

start firefox start jetaudio rem start defraggler

I dette tilfellet er lanseringen av Defraggler.exe-programmet installert på systemet deaktivert. Kommentarlinjer ved å spesifisere rem-kommandoen på begynnelsen av linjen. Alle BAT-filer kjøres i et konsollvindu. For å få den til å forsvinne når kommandoene er fullført, ikke glem å skrive avslutningskommandoen på slutten.

start firefox start jetaudio rem start defragler exit

Starte applikasjoner fra en bat-fil

I den første delen av artikkelen snakket jeg generelt om BAT-filer. Nå har det blitt klart hva det er og hva det spises med. I den andre delen skal vi snakke om mer spesifikke ting. For eksempel hvordan bruke en BAT-fil til å starte flere applikasjoner med visse innstillinger eller installere et program automatisk for ikke å kaste bort tid på svar som Godtar du vilkårene i lisensavtalen? og ikke trykk på unødvendige knapper.

Flere måter å starte applikasjoner ved å bruke en BAT-fil ble skissert ovenfor. Den aller første er en kort kommando for å starte programmet som er installert på systemet.

start firefox

Dette fungerer ikke alltid. Derfor kan denne teknikken brukes fullt ut på et spesifikt system, men den er ikke egnet som en universell løsning. Hvis målet ditt er å få BAT-filen til å fungere overalt og alltid, må du bruke fullstendige baner:

start C:\"Program Files"\"Mozilla Firefox"\firefox.exe

Jeg la også merke til at BAT-filen må inneholde en kommando for å fullføre:

start C:\"Program Files"\"Mozilla Firefox"\firefox.exe exit

Kjøre programmer i bat-filer med parametere (nøkler)

Du kan ikke bare kjøre programmet, men også gi det ekstra kommandoer når du starter det. For eksempel, kommando for å kjøre minimert:

start /min D:\FileZilla\FileZilla.exe exit

Å kommandere betyr i dette tilfellet å indikere nøkkelen. Tasten er indikert med en skråstrek etter hovedkommandoen (kommando / tast). Hovedkommandoen i dette tilfellet er start. Riktignok fungerer min-tasten bare i halvparten av tilfellene, fordi den er spesifikt knyttet til startkommandoen, og ikke til programmene som denne kommandoen starter.

Generelt er det mange nøkler og settene med nøkler for ulike programmer kan variere betydelig. Det er imidlertid noen få vanlige. For eksempel hjelpetasten (/? eller /help). For å se hvordan denne nøkkelen fungerer, la oss se på et praktisk eksempel. Åpne konsollen (klikk + R , skriv inn cmd , deretter Enter ) og skriv inn følgende i konsollen:

start /?

Konsollen vil vise en liste over gyldige nøkler med kommentarer for startkommandoen.

Vær oppmerksom på /wait-bryteren. I noen tilfeller er det rett og slett uerstattelig. For eksempel bestemte du deg for å bruke en BAT-fil til å pakke ut arkivet med programmet og kjøre akkurat dette programmet. Batchfilen vil inneholde to kommandoer - for utpakking og for lansering. Siden kommandoene vil bli utført nesten samtidig når du kjører BAT-filen, vil ikke arkivet ha tid til å pakke ut og det vil ikke være noe å kjøre. Derfor vil det være en feil. I dette tilfellet vil nøkkelen komme til unnsetning /vente:

Dermed vil systemet først utføre den første handlingen, vente til den er fullført, og først deretter fortsette til den andre. Hvis du trenger å vente en bestemt periode, er det lettere å bruke et konsollverktøy. På rett sted i BAT-filen skriver du følgende kommando (tallet er antall sekunder):

start Sleep.exe 15

Du kan gjøre mye med nøkler. Det er mulig å installere applikasjoner. For å gjøre dette brukes flere taster avhengig av typen installasjonsprogram som brukes til å installere programmet på datamaskinen:

/S /s /q /silent og en rekke andre

I noen tilfeller kan det være veldig praktisk. Avast antivirus har et stille installasjonsalternativ i bedriftsversjonen. Gratis (hjemme) versjonen har visstnok ikke en stille installasjon. Men hvis du vet hvordan InstallShield-installasjonsprogrammet fungerer, vil du forstå at dette er en canard, siden dette installasjonsprogrammet i seg selv støtter /S-stille installasjonsbryteren. Dette betyr at alle produkter laget på grunnlag av det gjør det samme. Og Avast er intet unntak. Bare lag en fil med innholdet i mappen med Avasts BAT

start avast.exe /S exit

du starter det og programmet installeres på datamaskinen din uten praktisk talt innspill fra deg. På denne måten kan du skrive en hel liste over programmer for stille installasjon og spare tid, for eksempel ved å installere systemet på nytt. I artikkelen kan du få mer detaljert informasjon om nøklene.

Det finnes andre alternativer for å administrere programmer ved hjelp av BAT-filer. Du kan starte et program ved å be det åpne en fil ved oppstart. Jeg bruker denne metoden når jeg utvikler nettsider. Det er veldig praktisk når hele verktøysettet åpner de nødvendige dokumentene og mappene med bare én knapp:

rem tilkobling til ftp-server start /min D:\FileZilla\FileZilla.exe "ftp://login:passord@server" rem åpning index.php i Firefox start C:\"programfiler"\"mozilla firefox"\firefox.exe "http://localhost/site_folder/index.php" rem å åpne start.html i et tekstredigeringsprogram start /min C:\"Program Files"\text_editor.exe "E:\server\site_folder\index.html" gjen å åpne mappen med nettstedsfiler start /min E:\server\site_folder rem konsoll utgang exit

Jeg legger merke til at alle teknikkene beskrevet ovenfor kan brukes i ulike kombinasjoner og kombinasjoner.

start /min /wait program.exe /m /S start C:\Directory\program2.exe "C:\Files\file.odt" exit

Men det er viktig å huske: alt relatert til utførelsen av programmet som ble lansert i batchfilen er skrevet med det på samme linje.

start C:\"programfiler"\"mozilla firefox"\firefox.exe "http://localhost/site_folder/index.php"

Som en epilog vil jeg tilby for din gjennomgang konverteren av BAT-filer til applikasjoner i .exe-formatet - . En BAT-fil er ikke alltid estetisk tiltalende, men ved hjelp av en omformer kan du pakke en batch-fil inn i en exe-fil, dekorere den med et hvilket som helst ikon du ønsker.

Jeg kom over en annen BAT til EXE-konverter, du kan vurdere den som et alternativ til det forrige programmet: Advanced Bat To Exe Converter

I denne artikkelen vil vi se på en så nyttig ting som " batch-fil" La oss først definere hva en bat-fil er. Batch- eller batchfiler er enkle tekstfiler som inneholder sett med kommandoer ( bruksanvisning) tolk og har utvidelsen bat eller cmd ( cmd fungerer bare i NT-familiens OSer). Du kan opprette og redigere slike filer ved å bruke en vanlig notisblokk eller et annet tekstredigeringsprogram.

Nå kan du spørre, hvorfor trenger du å kunne skrive slike bat-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 body-fil kan dette automatiseres, og du vil ikke lenger ta del i det.

For det andre er disse batchfilene veldig kraftige ( hvis du selvfølgelig vet hvordan du skriver dem), dvs. Du kan til og med skrive et godt program ( Jeg mener med tanke på funksjonalitet). Personlig hjelper de meg mye i arbeidet mitt, og jeg glemte rett og slett noen ting når jeg gjorde det manuelt.

La oss nå gå direkte til det grunnleggende om disse batchfilene. Hvordan lages de? Du trenger bare å lage et enkelt tekstdokument, åpne det og umiddelbart gå til "-fanen Fil->lagre som", skriv inn i stedet for utvidelsen " Tekst document.txt", For eksempel " Tekst document.bat" og lagre, så vi får en batchfil med .bat-utvidelsen, men den gjør ikke noe ennå.

Til å begynne med vil jeg gi et eksempel på en batch-fil 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:\arhaccounts\ d:\accounts\*.txt

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

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

I dette tilfellet arkiverer vi alle Word-, 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 skjer over nettverket, så datamaskinen som arkivet kopieres til må være slått på. For å gjøre dette kan du bruke følgende kommando:

Kopier E:\arhaccounts\*.rar \\namecomp\arhiv\

Eksempler på kommandoer for bat-filer

La oss nå se på de grunnleggende kommandoene 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\

Hvis du trenger å slette alt fra en eller annen katalog hver gang, bruk dette:

Ekko Y| del d:\fil\

  • del d:\file\ - dette er nettopp sletting av alle filer;
  • ekko Y| - kommandoen bekrefter slettingen fordi Hvis du ikke skriver inn 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 FINNES 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å skal jeg forklare, la oss si at du må pakke ut test.rar-arkivet, som vil inneholde mange filer, men hvis det er en 123.rar-fil der, må den pakkes ut til roten til stasjon C, og resten av filene forblir urørt i samme katalog.

For at det skal være nødvendig med @echo off-kommandoen slik at ingenting reflekteres på skjermen ( i utgangspunktet, hvis du ikke trenger det, kan du unnlate å skrive denne linjen). Deretter starter vi Winrar og pakker ut test.rar-arkivet i testmappen. Deretter kommer betingelsen hvis i testmappen ( etter utpakking test.rar) vi ikke har filen 123.rar, så kjører vi ganske enkelt batchfilen og går til linje: 1 og sletter deretter test.rar-filen da det ikke er nødvendig pga. Vi har allerede pakket ut alt vi trenger. Men hvis det er en fil 123.rar der, så går kjøringen av batchfilen til linje: 2, hvoretter filen 123.rar allerede er pakket ut til roten av stasjon C. Med andre ord har vi betingelsen oppfylt , hvis det er en fil, så gjør dette, hvis det ikke er noen fil, gjør dette. La oss si at hvis vi ikke spesifiserer betingelsen i dette eksemplet, vil batchfilen vår gi en feilmelding når vi ikke har 123.rar-filen i denne mappen.

La oss nå se på dette eksemplet, la oss si at du må flytte filer fra en katalog som ligger på stasjon D til en flash-stasjon hver gang. Hver gang du må gå til datamaskinens stasjon D, velg ønsket mappe, velg alle filene fra den og klipp den, og gå deretter til flash-stasjonen og lim den inn. Ved hjelp av en body-fil gjøres dette med ett klikk ( med en betingelse at hver gang flash-stasjonen vil være for eksempel stasjon G eller hva du har). Her er et eksempel på en slik batchfil:

Flytt "D:\catalog\*.doc" G:\catalognaflehe\

Og alle filer med doc-utvidelsen som ligger i D:\catalog-katalogen vil bli flyttet til flash-stasjonen. Nå vil jeg si at du kan bruke skript i batchfiler ( skript) ved å bruke Windows Scripting Host og om nødvendig, for eksempel for å vise en melding etter at filene har blitt 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 dette kan selvfølgelig ikke passe inn i én artikkel; her viste jeg bare prinsippene som brukes når du skriver bat-filer, grunnlaget for å si det sånn. Hvis du vil vite flere kommandoer for å skrive batchfiler, kan du enkelt se dem ved å skrive ( Start - Kjør - cmd) hjelpekommandoen, men det er selvfølgelig ikke alle kommandoene som kan brukes i batchfiler. Lykke til med å skrive BAT-filer ( kroppsskjorter).

Fortsettelse av emnet i artikkelen -

Bruk av bat-filer (ellers kjent som "bat-fil" eller "batch-fil") kan ofte gjøre arbeidet enklere, for eksempel automatisere programvareinstallasjon i henhold til forhåndsdefinerte parametere; dato og klokkeslett synkronisering; kjøre kommandosekvenser osv. Men for å bruke slike skript må du kunne lage dem. I kjernen er filer med filtypen .bat et sett med konsollkommandoer, de samme som brukes på kommandolinjen.

Artikkelen diskuterer tre metoder for å lage .bat-filer:

  1. Bruke kommandolinjen.
  2. Bruke Notepad-programmet.
  3. Bruke "Dr.Batcher"-verktøyet.

Trinn 1. For å starte kommandolinjen i "Start"-menyen, bruk dialogboksen "Søk etter programmer og filer". Du må angi cmd-søkeparameteren og venstreklikke på ikonet i delen "Programmer".

Steg 2. Det anbefales å bruke en egen katalog for å lagre skrevne batchfiler, så velg en plassering på harddisken og lag en spesiell mappe ved å skrive inn kommandoen "MD D:\Bat".

På en lapp! Kommandoen legges inn uten anførselstegn, et mellomrom legges til først etter brukM.D. I dette tilfellet, en mappe som heter « Flaggermus"vil bli opprettet på diskD. Kommandolinjen skiller ikke mellom store og små bokstaver, det vil si resultatet av å utføre "MDD:\Flaggermus", "mdD:\Flaggermus" og "mdd:\Flaggermus" vil være den samme.

Trinn 3. Lag selve batchfilen ved å bruke kommandoen "@echo off > D:\Bat\probnik.bat".

På en lapp! I dette tilfellet er store og små bokstaver viktig når du spesifiserer plasseringsbanen, det vil si mappen "flaggermus", "Flaggermus" og "BAT" - tre uavhengige og helt forskjellige kataloger. Hvis du peker på en ikke-eksisterende mappe, vil ikke kommandoen bli utført. Vær oppmerksom på at det heller ikke kommer noen feilmelding.

Trinn 4. For å endre innholdet i en fil, åpne plasseringen der den er lagret, ring opp kontekstmenyen og velg "Endre"-linjen.

Lag en batch-fil ved hjelp av Notisblokk

Trinn 1. For å starte notisblokken, gå til "Alle programmer"-menyen, velg "Tilbehør" og klikk på startikonet.

Steg 2.

Lær hvordan du oppretter en fil uten mye programmeringskunnskap fra den nye artikkelen -

Som et eksempel foreslår vi at du bruker følgende kode, som viser et bilde av en stjerne:

« @ekko av

mode con cols=32 linjer=50

tittelstjerne!

for %%i i (

88888888888888881888888888888888,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,

) gjør ekko %%i

pause > null

Merk følgende! Koden skal tastes inn uten anførselstegn. Sjekk alltid kommandosyntaksen. Hvis du glemmer å sette et komma på slutten av en linje, vil programmet slå seg sammen med det neste når programmet kjøres.

Trinn 3. Lagre den resulterende filen i ønsket katalog. For å endre oppløsningen, bruk "Filtype"-linjen, velg "Alle filer" i den, og når du skriver inn et navn, etter perioden, angi "bat".

Opprette en batchfil ved å bruke "Dr.Batcher"

Det angitte programvareproduktet er betalt, men gir mulighet til å bruke en testversjon i 30 dager.

Trinn 1. For å opprette en fil, bruk "Fil"-menyen, "Ny..."-elementet eller "Ctrl+N"-tastekombinasjonen.

Steg 2. I dialogboksen merker du av for "Tøm batchfil" og klikker på "OK".

Trinn 3. Spesifiser hvilke kommandoer bat-filen skal utføre.

På en lapp! Den høyre rammen inneholder nøkkelkommandoer som du kan bruke når du skriver kode. Bare velg den du vil ha og klikk på "Sett innCommand", som bidrar til å spare tid når du jobber.

Trinn 4. Lagre den resulterende filen i ønsket katalog.

Viktig! Vær oppmerksom på at dette verktøyet lar deg feilsøke programmet på farten. Bare bruk menyen "Batch" for å starte den allerede angitte sekvensen. Fremdriften vises i nederste ramme. Når du bruker elementet "HenretteiUtvendigWindow...” vil kjøre batchfilen, på samme måte som å starte den ved å bruke operativsystemet.

Konklusjon

Vi har beskrevet tre måter å lage filer med filtypen .bat på. To av metodene som er oppført er standardmetoder tilgjengelig med Windows, den ene krever installasjon av tilleggsprogramvare. Evalueringen av hver metode er gitt i oppsummeringstabellen.

Informasjon\NavnKommandolinjeNotisbokDr. Batcher
TillatelseLeveres med WindowsLeveres med WindowsBetalt
russisk språkAvhengig av Windows-versjonenAvhengig av versjon
Opprette en batchfilJaJaJa
Redigere en batchfilNeiJaJa
Brukergrensesnitt (fra 1 til 5)4 4 5

Video - Lage en flaggermusfil

Batch- eller batchfiler er vanlige tekstfiler som inneholder sett med tolkkommandoer og som har bat- eller cmd-utvidelsen (cmd fungerer bare i operativsystemer fra NT-familien). Du kan redigere slike filer ved å bruke notisblokk eller et annet tekstredigeringsprogram.

Åpne notisblokk og skriv inn følgende to linjer:

@echo Denne batchfilen
@pause

Denne batchfilen
Press hvilken som helst tast for å fortsette...

Etter å ha trykket på en hvilken som helst tast, lukkes vinduet, fordi bat-filen er fullført.
Vær oppmerksom på at hundesymbolet foran hver kommando i flaggermusfilen indikerer at selve kommandoen ikke trenger å vises på skjermen, men kun resultatet av operasjonen skal vises. For å eksperimentere, fjern hundekarakteren fra begynnelsen av hver linje, lagre og kjør den resulterende bat-filen.

Kommandoer brukt i bat-filer

Listen over kommandoer som kan brukes i bat-filer kan vises ved å skrive inn kommandoen på kommandolinjen (Start - Kjør - cmd for Windows NT-familien eller Start - Kjør - kommando for 9x-linjen)

Resultatet av hjelpen er en liste over tilgjengelige kommandoer med korte forklaringer for dem. For å få mer detaljert informasjon om kommandoen du er interessert i, skriv inn hjelp kommando_navn på kommandolinjen. For eksempel, for å få detaljert hjelp om AT-kommandobryterne, kjør følgende kommando:

Som et resultat vil en liste over nøkler for å kjøre AT-kommandoen fra bat-filen vises på skjermen.
Hvis bat-filen kjøres under Windows (ikke ren DOS), kan du kjøre alle programmer eller åpne filer fra den. For eksempel må du automatisk åpne loggfilen til bat-filen når den fullfører arbeidet. For å gjøre dette, inkluderer du bare følgende kommando i bat-filen som siste linje:

start filnavn.txt

Resultatet av å utføre denne kommandoen vil være åpningen av filen file_name.txt, og selve bat-filen vil fullføre arbeidet. Denne metoden er bra hvis loggfilen er liten, ellers vil Notepad nekte å åpne den, og foreslår at du bruker WordPad. Men dette problemet kan også løses, som vil bli vist i ytterligere eksempler.

Hvordan automatisere lanseringen av bat-filer

Svært ofte er det nødvendig å automatisere lanseringen av bat-filer for å utføre rutineoperasjoner. For å kjøre bat-filer etter en tidsplan, er Scheduler inkludert i standard Windows-pakken best egnet. Med denne hjelpen kan du meget fleksibelt konfigurere lanseringen av en batchfil på bestemte dager eller timer, med et visst intervall. Du kan lage flere tidsplaner osv.

For å lansere batchfiler lokalt kan du bruke løsninger fra tredjeparter; heldigvis finnes det mange betalte og gratis alternativer til standardplanleggeren.

Batchfiler kan også brukes som påloggingsskript i domener. Når de brukes på denne måten, vil de bli utført hver gang brukeren logger på nettverket, uavhengig av hans ønske. Med deres hjelp kan du automatisere innsamlingen av informasjon om maskiner eller programvare installert på brukerdatamaskiner, kraftig endre Windows-innstillinger, installere programvare uten at brukeren merker det, og automatisere løsningen av andre oppgaver som vil ta mye tid å utføre manuelt.

Hvordan lage en fil med et vilkårlig navn fra en bat-fil

Et omdirigeringssymbol brukes til å lage en fil mens en batchfil kjører. Det ser slik ut:
>
De. for å lage en fil må du omdirigere strømmen fra skjermen til filen. Dette kan gjøres ved å bruke følgende kommando:

@echo Start fil>C:\1.txt

Etter å ha utført denne kommandoen, opprettes en tekstfil med linjen Startfil i roten til stasjon C.
Når du oppretter en fil, kan du bruke systemvariabler eller deler av dem i navnet. Du kan for eksempel lage en rapportfil om driften av en bat-fil med et navn som tilsvarer datoen da bat-filen ble lansert. For å gjøre dette kan du bruke følgende linjer i bat-filen.

sett datotemp=%dato:~-10%
@echo .>%SYSTEMDRIVE%\%DATETEMP%.txt

Disse to linjene fungerer slik. Først lager vi en datetemp-variabel i minnet, som vi tildeler 10 tegn fra høyre til venstre fra DATE-systemvariabelen. Dermed inneholder den midlertidige variabelen datetemp bare gjeldende dato. Med neste linje omdirigerer vi utdataene fra punktsymbolet til en fil, hvis navn er hentet fra datetemp-variabelen, og txt-utvidelsen er spesifisert eksplisitt. Filen vil bli opprettet på systemdisken til datamaskinen der bat-filen kjøres.

Når en administrator samler inn informasjon om datamaskiner på nettverket, vil det være mer praktisk å legge til datamaskinnavnet i filnavnet. Dette kan enkelt gjøres ved å bruke følgende kommando:

@echo .>C:\Mappenavn\%COMPUTERNAME%txt

Denne kommandoen, mens den utfører en batchfil, vil opprette en tekstfil på stasjon C med navnet på datamaskinen som batchfilen kjører på.
For å lage en fil med et bestemt navn, kan du bruke hvilke som helst systemvariabler, eller lage dine egne basert på systemvariabler og/eller andre data.

Hvordan lage en mappe fra en bat-fil

For å opprette en mappe, bruk MKDIR-kommandoen eller dens forkortede tilsvarende MD. For å lage en mappe fra en bat-fil må du bruke følgende kommando:

Etter å ha utført denne kommandoen, opprettes en mappenavn i mappen som bat-filen ble lansert fra. For å lage en fil på et annet sted enn der du startet bat-filen, for eksempel i roten til stasjon D, bruk en eksplisitt indikasjon på plasseringen til den nye mappen. Kommandoen vil se slik ut:

MD D:\Mappenavn

Når du oppretter mapper, kan du bruke systemvariabler. Du kan for eksempel opprette en mappe i roten til stasjon D med navnet på gjeldende bruker. For å gjøre dette trenger du variabelen %USERNAME%, og kommandoen vil se slik ut:

MD D:\%USERNAME%

Du kan komplisere kommandoen ytterligere og lage en mappe med navnet på den gjeldende brukeren på systemstasjonen til datamaskinen hans. Kommandoen for dette vil se slik ut:

MD %SYSTEMDRIVE%\%USERNAME%

Når du oppretter mapper eller filer, kan du bruke alle systemvariabler eller deler av disse. Følgende eksempel viser opprettelsen av en mappe på systemstasjonen til brukerens datamaskin med et navn som tilsvarer gjeldende dato.

sett datotemp=%dato:~-10%
MD %SYSTEMDRIVE%\%datetemp%

Dette designet fungerer som følger.
Den første kommandoen oppretter en datetemp-variabel i minnet, som vil bli ødelagt når bat-filen er ferdig å kjøre. Inntil bat-filen har fullført arbeidet, er det mulig å operere med verdien til denne variabelen. Datetemp-variabelen er tildelt 10 tegn fra høyre til venstre for DATE-systemvariabelen, dvs. fra gjeldende dato. DATE-variabelen har formatet Dag DD.MM.ÅÅÅÅ. De første tegnene til venstre er navnet på ukedagen, så vi forkaster dem og tildeler kun gjeldende dato til den midlertidige variabelen datetemp.
Dette begrenser ikke listen over muligheter når du oppretter mapper. Du kan manipulere variabler slik du vil, lage mapper med unike, lettleste navn. Du kan få en liste over alle variabler ved å bruke SET-kommandoen.

Hvordan omdirigere resultatet av kommandoutførelse til en fil

Ofte, når du kjører en kompleks bat-fil i automatisk modus, kan det av mange grunner være vanskelig å sjekke resultatene av arbeidet. Derfor er det lettere å skrive resultatene av batchfilkommandoer til en tekstfil (loggfil). og analyser deretter den korrekte operasjonen til bat-filen ved å bruke denne loggen.
Å omdirigere resultatet av bat-filkommandoer til en loggfil er ganske enkelt. Det følgende vil vise hvordan dette kan gjøres.
Lag en bat-fil med følgende innhold (kopier disse linjene til Notisblokk og lagre filen med bat-utvidelsen):

@ekko av
ekkostart %tid%
echo Opprett test.txt
ekkotest>C:\test.txt
echo Kopier Test.txt til Old_test.txt
kopier C:\test.txt C:\Gammeltest.txt
ekkostopp %tid%

Den første linjen deaktiverer utdataene til selve kommandoene. Dermed vil bare resultatene av deres kjøring bli skrevet til loggfilen.
Den andre linjen skriver til loggfilen starttidspunktet for batchfilen.
Den tredje linjen skriver til loggfilen en forklaring om at følgende kommando vil lage en test.txt-fil
Kommandoen fra den fjerde linjen lager en fil test.txt fra roten til stasjon C. Filen opprettes for eksempel. Denne kommandoen skriver ordet test til filen C:\test.txt
Den femte linjen skriver ut til loggfilen en forklaring om at følgende kommando kopierer en fil fra ett sted til et annet.
Kommandoen i sjette linje kopierer den opprettede filen C:\test.txt til filen C:\Old_test.txt, dvs. en kopi av filen opprettes under et nytt navn.
Den siste, syvende linjen inneholder en kommando for å vise fullføringstiden for batchfilen. Sammen med registreringen av starttidspunktet for batchfilen i loggfilen, gjør disse to tidsverdiene det mulig å estimere kjøretiden til batchfilen.

Lagre denne batchfilen med et navn som 1.bat
La oss anta at vi ønsker å lagre en rapport om driften av en batchfil i en egen mappe og skrive en rapport hver dag med et nytt filnavn, slik at vi kan få tilgang til loggene for tidligere dager på en hvilken som helst dag. Dessuten vil jeg gjerne ha navnet på loggfilen i form av driftsdatoen for batchfilen. For å implementere alt dette, la oss lage en mappe på stasjon C (for eksempel) kalt LOG, dvs. den fullstendige banen til den vil se ut som C:\LOG. Vi kjører den opprettede batchfilen 1.bat med følgende kommando:

1.bat>C:\LOG\%date~-10%.txt

Hvis batchfilen vil bli lansert fra planleggeren, må du spesifisere hele banen til bat-filen. Husk at hvis det er mellomrom i banen, må du bruke enten anførselstegn eller 8.3-format. Det vil si at hvis banen til bat-filen er C:\Program Files\1.bat, for eksempel, må du spesifisere én av følgende linjer i Scheduler-kommandolinjen for å kjøre bat-filen:

"C:\Program Files\1.bat">C:\LOG\%date~-10%.txt
C:\Progra~1\1.bat>C:\LOG\%date~-10%.txt

Etter å ha kjørt 1.bat-filen, vil det bli opprettet en fil i C:\LOG-mappen med et navn som tilsvarer datoen bat-filen ble lansert, for eksempel 01/13/2004.txt Dette vil være en rapport om drift av 1.bat batch-filen
Å kjøre bat-filen, et eksempel som vises i den første oppføringen øverst på siden, ved å bruke kommandoen ovenfor, vil føre til opprettelse av en loggfil med følgende innhold:

Start 19:03:27.20
Opprett test.txt
Kopier Test.txt til Old_test.txt
Filer kopiert: 1.
Stopp 19:03:27.21

Derfor, for å omdirigere resultatene av en bat-fil til en loggfil, må du bruke omdirigeringssymbolet > Syntaksen er som følger:

Bane\Filnavn.bat>Path\LogFilnavn.txt

Loggfiltypen kan være hva som helst. Om ønskelig kan en rapport om utførelse av en batchjobb til og med formateres som en html-side (de tilsvarende taggene kan sendes ut til en loggfil på samme måte som kommentarer ble skrevet ut i eksempel 1.bat) og kopieres til en bedrift server.

Slik svarer du automatisk på en bekreftelsesforespørsel

Noen kommandoer krever bekreftelse av en potensielt farlig handling når de utføres. For eksempel vil kommandoer som format eller del først be om bekreftelse før videre kjøring. Hvis en av disse kommandoene utføres i en batchfil, vil bekreftelsesprompten stoppe batchfilen fra å kjøre, og den vil vente på at brukeren velger ett av de gitte alternativene. Videre, hvis resultatet av å kjøre en batchfil omdirigeres til en loggfil, vil ikke brukeren se en bekreftelsesforespørsel og batchfilen vil vises frossen.

For å rette opp slike problemer kan du omdirigere ønsket respons til kommandoen. De. utfør den omvendte handlingen for å omdirigere utdataene fra kommandoen til en fil.
La oss se på et eksempel på hvordan en forespørsel om å bekrefte en potensielt farlig handling ser ut. La oss lage for eksempel en mappemappe på stasjon C. La oss lage eller kopiere to filer inn i den. Deretter åpner du kommandolinjen og kjører følgende kommando:

Denne kommandoen skal fjerne alle filer fra den angitte mappen. Men først vil du bli bedt om å bekrefte følgende innhold:

C:\Folder\*, fortsette ?

Kommandoen vil slutte å utføre inntil enten Y-tasten eller N-tasten trykkes. Når du kjører en batchfil i automatisk modus, vil kjøringen stoppe.
For å unngå dette bruker vi omdirigering. Omdirigering utføres ved hjelp av symbolet
Den vertikale linjen indikerer at i stedet for å vise symbolet på skjermen, bør det "gis" til kommandoen etter symbolet. La oss sjekke omdirigeringen. Kjør følgende kommando på kommandolinjen:

echo Y|del C:\Folder

Skjermen vil vise en forespørsel om å bekrefte sletting av alle filer i mappen mappe, men med et positivt svar (Y). Alle filene i mappen vil bli slettet.
Vær forsiktig med denne kommandoen.

Hvordan deaktivere kommandoer som vises når du kjører en batchfil

Når du utfører en batchfil, vises i tillegg til resultatene av kommandoen, selve kommandoene. Du kan bruke @-symbolet for å undertrykke kommandoutgang.
For å unngå å skrive ut én kommando på skjermen, kan du sette et @-tegn i begynnelsen av kommandoen.

Denne kommandoen viser kommandoen ekkotesting, og på neste linje - resultatet av operasjonen, ordet testing.

Denne kommandoen vil kun vise resultatet av kommandoen, dvs. ordet testing. Selve kommandoen sendes ikke ut.
Hvis du ikke trenger å vise kommandoer på skjermen gjennom hele kjøringen av hele filen, er det lettere å skrive følgende kommando som første linje i batchfilen:

Denne kommandoen vil deaktivere kommandoutgang til skjermen for hele batchfilen. For å forhindre at selve kommandoen skrives ut, begynner den med @-symbolet.

Hvordan kjøre en annen fra en bat-fil

Noen ganger, mens du kjører en batchfil, blir det nødvendig å kjøre en annen batchfil. Dessuten, i noen tilfeller må kjøringen av hovedbatchfilen suspenderes mens hjelpefilen kjøres, og i andre må hjelpefilen kjøres parallelt med hovedfilen.
La oss for eksempel lage to bat-filer. En som heter 1.bat og inneholder bare én kommando

Den andre heter 2.bat og inneholder også én kommando

La oss nå kjøre 1.bat-filen. Et vindu åpnes der du blir bedt om å trykke på en hvilken som helst tast for å fortsette, etter å ha trykket vil vinduet lukkes. Ved å kalle en batchfil til en annen ved å bruke call-kommandoen stopper kjøringen av batchfilen til batchfilen som kalles av call-kommandoen fullfører kjøringen.

I et annet tilfelle må du starte enten et program eller en annen batchfil fra en batchfil uten å avbryte kjøringen av hovedbatchfilen. Dette må ofte gjøres, for eksempel ved å åpne loggen til en batchfil som er planlagt for natten, slik at brukeren om morgenen kan kontrollere at den er utført. For å gjøre dette, bruk startkommandoen La oss rette linjen i fil 1.bat til

og kjør 1.bat-filen Nå har et vindu åpnet seg der du må trykke på en hvilken som helst knapp for å fortsette, og vinduet til hovedbatchfilen (1.bat) er lukket.
For å ringe en annen fra en batchfil uten å stoppe den første batchfilen, må du bruke startkommandoen.
Start- og anropskommandoene diskutert ovenfor kan brukes ikke bare til å starte andre batchfiler, men også til å starte alle applikasjoner eller åpne filer.
For eksempel vil start log.txt-kommandoen i brødteksten til en batchfil åpne log.txt-filen i Notisblokk uten å stoppe batchfilen.

Hvordan sende en melding fra en bat-fil

Når en batchfil kjøres på en av maskinene på nettverket, er det praktisk å informere administratoren om at kjøringen er fullført ved hjelp av en melding sendt til administratorens maskin. Du kan gjøre dette ved å inkludere kommandoen i batchfilen

net send navn Meldingstekst

Der navn er navnet på maskinen eller brukeren som meldingen er adressert til, og meldingstekst er meldingens tekst. Etter å ha kjørt denne kommandoen, vil en melding bli sendt til brukernavn.
Vær oppmerksom på at når du bruker kyrillisk i teksten til en melding, må teksten skrives inn i MS-DOS-koding (866 kodeside). Ellers vil meldingen komme i form av uleselige tegn. Du kan skrive inn tekst i DOS-koding ved å bruke et hvilket som helst tekstredigeringsprogram som støtter denne kodingen. Dette kan for eksempel være FAR. Åpne en batchfil for redigering i FAR (F4) og trykk på F8-knappen. Den øverste linjen i editoren skal indikere DOS-kodingen, og nederst, ved verktøytipset om hurtigtastene, skal F8-tasten ha påskriften Win, som indikerer at gjeldende koding er DOS og for å bytte til Win-kodingen du trenger for å trykke F8.

Hvordan automatisere filsletting etter type

For å tømme disken for midlertidige filer, kan du bruke kommandoen

del /f /s /q C:\*.tmp

Hvor
/f - sletter alle filer, selv om de har skrivebeskyttet attributt satt
/s - sletter filer fra alle underkataloger
/q - deaktiverer forespørselen om å bekrefte filsletting
C: er stasjonen der filene vil bli funnet og slettet. Du kan ikke spesifisere hele disken, men en mappe, for eksempel C:\WinNT
*.tmp - type filer som vil bli slettet

Vær forsiktig med /q-bryteren og filtypene du sletter. Kommandoen sletter uten å spørre om tillatelse, og hvis feil filtype er angitt, kan den slette unødvendige filer.

Hvordan endre en datamaskins IP-adresse fra en batchfil

IP-adressen kan endres ved å bruke netsh-kommandoen.
For å endre IP-adressen riktig, må du først finne ut gjeldende konfigurasjon. Dette kan gjøres på kommandolinjen ved å bruke kommandoen

netsh grensesnitt ip vis adresse

Resultatet av denne kommandoen er å vise gjeldende konfigurasjon av nettverksgrensesnittet. Vi er interessert i navnet på grensesnittet. La oss si at det heter FASTNET.
La oss anta at du må endre IP-adressen til 192.168.1.42, nettverksadresseringen er statisk, uten å bruke DHCP, gatewayen er 192.168.1.1, masken er 255.255.255.0. I dette tilfellet må kommandoen som må utføres fra batchfilen vil se slik ut:

netsh-grensesnitt ip-sett adresse navn = "FASTNET" statisk 192.168.1.42 255.255.255.0 192.169.1.1 1

Etter å ha utført denne kommandoen, vil FASTNET-grensesnittets IP-adresse endres til 192.168.1.42.
Netsh-kommandoen gir omfattende muligheter for å administrere nettverksinnstillinger fra kommandolinjen. For annen funksjonalitet, se hjelp med netsh /?

Hvordan finne ut datamaskinnavnet fra en bat-fil

For å finne ut datamaskinnavnet når du kjører en bat-fil (for å bruke denne verdien i fremtiden), bruk kommandoen

Denne kommandoen returnerer navnet på datamaskinen den kjører på.

Hvordan gi nytt navn til filer med maske fra en batchfil

Noen ganger blir det nødvendig å endre navn på alle filene i en mappe ved å bruke en mal fra en batchfil. Dette kan gjøres ved å bruke følgende kommando i bat-filen:

for /f "tokens=*" %%a in ("dir /b PATH\*.*") gjør ren PATH\%%a Prefiks%%a

På denne linjen må du erstatte PATH\ med banen til filene som skal gis nytt navn, og Prefiks med de tegnene som vil bli lagt til filnavnet ved nytt navn.
Ikke legg batchfilen i mappen der endringen skjer, ellers vil den også få nytt navn. Hvis det er undermapper i mappen hvor filene er omdøpt, vil det også legges til et prefiks i navnet på undermappen, dvs. undermapper vil bli omdøpt som filer.
Hvis du spesifiserer en spesifikk maske for filtypene som er gjenstand for omdøping, for eksempel *.txt, og ikke *.* som i eksempelet, vil bare filer av de angitte typene få nytt navn. Andre filer og mapper vil ikke få nytt navn.

Andre alternativ:
sett PATH=C:\test
for %%I i (*.txt) gjør ren "%thePATH%\%%~nxI" "%%~nI.dat"
Slik bruker du prosentsymbolet i en batchfil

For å bruke prosentsymbolet (%) i en batchfil, må du skrive det to ganger. For eksempel
ekko 50 %%
Denne kommandoen i bat-filen vil vise 50%. Hvis du bruker kommandoen ekko 50 %, vil bare tallet 50 vises på skjermen.
Ta hensyn til denne funksjonen når du bruker %-symbolet når du skriver batchfiler.

Hvordan eksportere registeret fra en batchfil

regedit.exe -ea C:\environment.reg "HKEY_CURRENT_USER\Environment"

Denne kommandoen, når du kjører en batchfil, vil dumpe HKEY_CURRENT_USER\Environment-grenen inn i filen C:\environment.reg Når du trenger å gjenopprette parameterverdiene i HKEY_CURRENT_USER\Environment, vil det være nok å kjøre environment.reg fil. Denne kommandoen kan brukes til å lage en daglig sikkerhetskopi av programvare og systeminnstillinger som er lagret i registeret.
Ikke glem at hvis det er et mellomrom i banen der utdatafilen skal lagres eller i navnet på registerkuben, må de være omgitt av anførselstegn.

Slik importerer du registervariabelverdier fra en batchfil

Hvis det er behov for å importere tidligere lagrede eller nye variabelverdier til registeret fra en batchfil, kan dette gjøres ved å bruke kommandoen

regedit.exe -s C:\environment.reg

Denne kommandoen importerer data fra filen environment.reg til registret uten å be om bekreftelse ved å bruke -s-bryteren.

Hvordan omgå datokontroll fra en flaggermus-fil

Noe programvare sjekker gjeldende systemdato ved oppstart. Hvis datoen er større enn det som ble satt av utvikleren, starter ikke programmet. En utvikler tror for eksempel at en versjon av et program kan fungere i en måned, og da må brukeren installere en oppdatert versjon av programmet. På den ene siden er dette en bekymring for brukeren, som vil ha til disposisjon den nyeste versjonen av programmet med manglene eliminert i forhold til tidligere versjoner. På den annen side tvinger produsenten brukeren til å laste ned en ny versjon selv om brukeren er helt fornøyd med versjonen av programmet han har installert. Dette problemet kan enkelt løses ved å bruke følgende batchfil, som vil kjøre programmet, vente til det fullføres og returnere datoen til den som var før programmet ble lansert.

sett tempdate=%dato:~-10%
dato 01-01-04
notepad.exe
dato %tempdate%

I dette eksemplet blir gjeldende systemdato først lagret i en variabel, deretter (på andre linje) settes systemdatoen til 1. januar 2004, og deretter kalles et program som kontrollerer systemdatoen. I dette eksemplet er det Notisblokk. Så lenge Notisblokk er åpen, venter batchfilen uten å fullføre eller sette systemdatoen tilbake. Når Notepad er lukket, vil batchfilen fortsette å kjøre og sette systemdatoen til verdien som er lagret i tempdate-variabelen, dvs. til den som var før du kjørte batchfilen.

Ikke glem at hvis banen til filen som kjører programmet inneholder mellomrom, må den (banen) være omgitt av anførselstegn. Hvis banen inneholder kyrillisk, må du bruke et tekstredigeringsprogram som støtter DOS-koding når du skriver en batchfil (for eksempel FAR). Ellers, når du kjører batchfilen, vil en melding vises som sier at "den angitte filen er ikke en intern eller ekstern kommando...".

Hvis et program sjekker gjeldende systemdato først når det starter og ikke gjør dette igjen under drift, kan batchfilen endres ved å legge til en startsetning før navnet på programmets kjørbare fil, dvs. vårt eksempel vil se slik ut:

sett tempdate=%dato:~-10%
dato 01-01-04
start notepad.exe
dato %tempdate%

I dette tilfellet vil batchfilen endre systemdatoen, starte programmet og, uten å vente på at det fullføres, returnere datoen til den som var før programmet ble lansert.

Hvordan vente på at en bestemt fil skal vises i en bat-fil

Noen ganger er det nødvendig å utføre en handling når en bestemt fil vises i en mappe. For å organisere en sjekk for utseendet til en fil i en mappe, kan du bruke følgende batchfil

:test
hvis det finnes, må c:\1.txt gå
sove 10
skal prøve
:gå
notatblokk

En slik batchfil vil sjekke med 10-sekunders intervaller for tilstedeværelsen av fil 1.txt i roten av C-stasjonen, og når fil 1.txt vises, vil handlingen spesifisert etter go-etiketten bli utført, dvs. dette eksemplet vil starte Notisblokk.
Søvnverktøyet distribueres fritt som en del av ressurssettet. Du kan laste den ned her.
Hvis 1.txt-filen er stor og blir kopiert fra et sted, kan det hende at batchfilen vil sjekke om den er tilstede mens filen ennå ikke er kopiert eller er opptatt med et annet program. I dette tilfellet vil forsøk på å utføre noen handlinger med 1.txt-filen resultere i en feil. For å forhindre at dette skjer, kan batchfilen endres som følger

:test
hvis det finnes, må c:\1.txt gå
sove 10
skal prøve
:gå
gi nytt navn til c:\1.txt 1.txt
hvis ikke må feilnivå 0 gå
del c:\1.txt

Når 1.txt-filen ikke er fullstendig kopiert til stasjon C, eller er okkupert av et annet program, vil et forsøk på å endre navn på den forårsake en feil og syklusen vil bli gjentatt til filen er fullstendig kopiert eller frigjort. Etter at rename c:\1.txt 1.txt-kommandoen er utført uten feil (dvs. filen er gratis), kan du utføre alle handlinger med den. I det siste eksemplet er det å fjerne det.

Hvordan legge til kommentarer til en bat-fil

Når du skriver en stor batchfil, er det veldig nyttig å legge til kommentarer til hovedblokkene. Dette vil gjøre det enkelt å forstå hva disse blokkene gjør over tid.

Mange tekniske forfattere har behov for å automatisere filbehandling fra tid til annen. Noen ganger snakker vi om engangsbehandling av et stort antall filer, noen ganger snakker vi om å systematisk utføre de samme handlingene, for eksempel når du bruker DocBook- eller DITA-teknologier). Å behandle hver fil med en egen manuell kommando tar ikke bare tid, men fører også til vanskelige å identifisere feil som oppstår på grunn av operatørens naturlige uoppmerksomhet.

I MS-DOS-operativsystemet og i alle operativsystemer i Microsoft Windows-familien er den enkleste måten å automatisere behandlingen av filer (og kataloger) på såkalte batch-filer. La oss si med en gang at batchfiler ikke er den eneste måten å automatisere brukerens arbeid på, selv blant de innebygde. I operativsystemer i Microsoft Windows-familien, fra og med versjon 98, er det også en Windows Script(ing) Host. I tillegg er det ingen som forbyr oss å bruke et eller annet tolket språk til disse formålene, for eksempel Perl, Python eller Ruby. Imidlertid krever de listede verktøyene, selv om de er kraftige, programmeringskunnskaper, dvs. komponer og, viktigere, feilsøke programmer, i det minste på et godt amatørnivå. Å bruke batchfiler er tilgjengelig for alle uten spesiell opplæring; oppmerksomhet og sunn fornuft er nok.

Viktig notat. En komplett oppslagsbok eller til og med en velskrevet lærebok om MS-DOS-kommandoer og utvikling av batchfiler vil måtte beskrive de mange nyansene knyttet til bruken av forskjellige parametere, særegenhetene ved driften av batchfiler i forskjellige versjoner av Microsoft Vinduer osv. og så videre. Denne artikkelen hevder ikke å være fullstendig, spesielt:

  • vi vil ikke beskrive forskjellige måter å oppnå samme resultat på;
  • Vi vil ikke beskrive alle mulighetene og bruksområdene til de nevnte kommandoene.

Nå er vår oppgave å hjelpe de som er helt eller nesten ukjente med dette verktøyet til å begynne å mestre batchfiler. Du kan da lese om alle detaljene i selskapets dokumentasjon eller oppslagsverk.

Kommandoprosessor

Mange operativsystemer, inkludert de utviklet av Microsoft, inkluderer en kommandoprosessor. Dette er navnet på et program som starter utførelsen av ulike handlinger som svar på kommandoer som er lagt inn av brukeren fra tastaturet. I utgangspunktet består disse handlingene av å starte de nødvendige programmene med visse parametere. Men ikke bare; Vi vil se senere at noen kommandoer utføres direkte av kommandoprosessoren. 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 med mindre vi må. Enda viktigere er at ethvert program som er teknisk mulig å kjøre fra kommandolinjen anses av kommandoprosessoren som en kommando. Den skiller ikke mellom de opprinnelige kommandoene som opprinnelig var innebygd i operativsystemet og programmer som ble installert på toppen av det.

Slik starter du kommandoprosessoren:

  1. Klikk på knappen Start. Hovedmenyen vil vises på skjermen.
  2. Velg Kjør fra hovedmenyen. En dialogboks vises på skjermen Starter programmet.
  3. Skriv inn strengen i Åpne-feltet cmd.
  4. Klikk på knappen OK. Et kommandoprosessorvindu vises på skjermen.

Kommandolinje og kommandoer

Kommandoprosessorvinduet i sin opprinnelige form ser dystert ut, og å jobbe med det er ikke særlig praktisk for folk flest. Det er mye enklere å bruke filbehandlere i Norton Commander-stil. De gir både verktøy for raskt å navigere i filsystemet og timing for å legge inn kommandoer.

For å angi kommandoen:

  1. Skriv inn kommandoteksten på kommandolinjen.
  2. Trykk på tasten Tast inn.

Kommandoprosessoren og operativsystemkommandoene er 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, bruk kommandoen som en parameter hjelp navnet hennes skal angis. Kommandolinjen vist i følgende liste viser en beskrivelse av kommandoen til.

Hjelp til

Hvis du prøvde å skrive inn kommandoen hjelp, har du sannsynligvis lagt merke til at resultatet av arbeidet (den såkalte utgangen) ikke passer på en skjerm. Det samme problemet oppstår med kommandobeskrivelsesteksten til. Den gode nyheten er at utdata 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 beskrivelse av kommandoen til, må du gi følgende kommando (du kan gjøre utdatafilnavnet hva som helst).

Hjelp for > for.txt

Totalt er det litt mindre enn 80 kommandoer i moderne Microsoft-operativsystemer, 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 ytterligere eksempler. Du kan alltid avklare detaljene med kommando hjelp eller i katalogen.

kopiere— kopiering av en eller flere filer;

del— sletting av 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— kopiering av underkatalogtreet;

mkdir(forkortet md) — lage en katalog;

rmdir(forkortet rd) — sletter en katalog.

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

Flytt boks\øl.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, så 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. Poenget 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 spesifiserer vi alt som starter med stasjonen (eller nettverksnavnet til datamaskinen), for eksempel d:\misha\box\beer.txt. Uansett hvilken katalog som tilfeldigvis er gjeldende når kommandoen skrives inn, vil hele banen tilsvare den samme filen. For en relativ bane fungerer den gjeldende katalogen som utgangspunkt. Det enkleste tilfellet av en relativ bane er et filnavn. I sammenheng med kommandoutførelse betyr det en fil med det navnet som ligger i gjeldende katalog.

For å skrive en relativ bane til gjeldende katalog, er det en betinget oppføring . (punktum). For å registrere den relative banen til katalogen som inneholder gjeldende katalog, er det en betinget notasjon .. (to prikker). Kommandoen vist i følgende liste kopierer alle filer fra gjeldende katalog til katalogen nabo, som ligger ved siden av.

Kopier *.* .\nabo

Batch-filer

Inntil nå, når vi ga eksempler, antok vi at vi skrev inn kommandoer manuelt hver gang. Når du behandler et stort antall filer eller systematisk utfører de samme kommandoene, blir dette tungvint. Derfor gir kommandoprosessoren muligheten til å utføre kommandofiler. En batchfil er en tekstfil der kommandoer (eller minst én kommando) er skrevet inn. Et eksempel på batchfil vises i følgende liste. Prøv å gjette hva denne batchfilen gjør.

Help copy > copy.help help move > move.help md msdos-help move *.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 å gi kommandofiler utvidelsen flaggermus. Dette er hvordan filer av denne typen gjenkjennes av kommandoprosessoren. Denne filen kan for eksempel kalles make-help.bat.

Slik kjører du batchfilen:

  1. Skriv inn navnet hans som en kommando. Etter dette vil batchfilen kjøres.

I en batch-fil tar hver kommando opp én linje. Mer presist er det en måte å plassere en kommando på flere påfølgende linjer; for å gjøre dette, umiddelbart før hvert linjeskift bør du sette "cap"-symbolet ^ . (Hver cap må være det siste tegnet på linjen, 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:\science\papers\drafts\sources

Men for enkelhets skyld, for ikke å ta forbehold hver gang, vil vi anta at dette på en måte er en lang "logisk" linje.

Når en batchfil kjøres, skanner kommandoprosessoren den fra topp til bunn fra første linje til siste og utfører kommandoene i den rekkefølgen den møter dem. Den utfører dem generelt 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 (hva som kan forårsake et slikt behov er et eget spørsmål).

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

Kommenter batchfilen og dens utdata. ekko og rem kommandoer

En batchfil er egentlig et program skrevet i operativsystemets kommandoprosessorspråk. Teksten til programmet bør være utstyrt med kommentarer, slik at du, når du kommer tilbake til det en tid senere, ikke trenger å smertefullt huske hvorfor dette programmet er nødvendig og hvordan det fungerer.

MS-DOS-kommandosystemet gir en kommando for å lage kommentarer: rem. Dette er en dummy-kommando som ikke innebærer å utføre 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 kommandofil med kommentarer er vist i følgende liste.

Rem ************************************************** **** rem Genererer hjelpefiler ved å bruke kopierings- og flyttkommandoene rem *********************************** * ****************** rem Opprett hjelpefiler help copy > copy.help help move > move.help rem Opprett en katalog for lagring av hjelpefiler md msdos-help rem Flytt hjelpefiler til den forberedte katalogen flytt *.help msdos-help

Legg merke til de tomme linjene som deler opp batchfilen i "avsnitt". Dette enkle trikset lar deg gjøre 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. Kommandoutstedelse kan deaktiveres ved hjelp av kommandoen @ekko av. "hund"-symbolet foran kommandoen ekko Dette betyr at selve kommandoen må utføres i "stille" modus. Vi kan like gjerne ikke bruke kommandolinjen ekko av, men plasser en "hund" foran hver kommando.

I mange tilfeller vil du at en batchfil skal vise bestemte meldinger på skjermen (eller i en fil). I noen tilfeller kan dette være feilmeldinger, i andre informasjonsmeldinger som forklarer brukeren av batchfilen hva som skjer for øyeblikket når vi lager en annen nyttig fil med batchfilen. Den samme ekkokommandoen brukes til å vise meldinger. Teksten til meldingen som skal vises, sendes til den som en parameter. Listen over den forbedrede batchfilen er gitt nedenfor.

@echo off rem ********************************************** ******** ******* rem Genererer hjelpefiler ved å bruke kopierings- og flyttkommandoene rem ************************ ********* ******************** @echo Genererer hjelpefiler. Bare et sekund... rem Opprett hjelpefilene help copy > copy.help help move > move.help rem Opprett en katalog for å lagre hjelpefilene md msdos-help rem Flytt hjelpefilene til den forberedte katalogen move *.help msdos -hjelp ekko Ferdig!

Sende parametere til en kommandofil

La oss si at vi ønsker å lage en batch-fil som først genererer hjelp til å beskrive en brukerspesifisert kommando, og deretter laster den inn i Notisblokk for visning. Trikset er å på en eller annen måte fortelle det neste gang vi kjører batchfilen hvilken kommando vi er interessert i denne gangen.

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

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

@echo off rem Vi lager en fil med en beskrivelse av kommandoen, rem hvis navn sendes av parameteren help %1 > help.tmp rem Vi laster beskrivelsesfilen inn i Notepad-editoren notepad help.tmp

La oss anta at vi gir denne batchfilen navnet show-help.bat. For å laste inn en kommandobeskrivelse i en 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 inn en fil som inneholder teksten som beskriver kommandoen spesifisert i den andre parameteren.

Rem Et eksempel på en kommandofil med to parametere rem Opprett en katalog med navnet spesifisert av den første parameteren md %1 rem Opprett en fil i den med en beskrivelse av kommandoen rem spesifisert av den andre parameteren hjelp %2 > %1\ %2.hjelp

Hva skjer hvis brukeren spesifiserer fire parametere i stedet for to når denne kjører denne batchfilen? Det er greit, de vil ikke forstyrre noe, de vil bare ikke bli brukt. Hva skjer hvis brukeren spesifiserer kun den første parameteren? Den andre parameteren vil være tom. Effekten vil være denne: batchfilen vil bli utført, men som i stedet for opptaket %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 dette er for å lage en katalog), vil vi få en syntaksfeil fordi md-kommandoen må ha en parameter.

Dermed skaper bruk av parametere store muligheter, men kan komplisere ting betydelig. For at batchfilen alltid skal fungere riktig, er det nødvendig å kontrollere riktigheten av brukerens spesifiserte parametere 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 forårsake problemer, spesielt hvis den involverer sletting eller overskriving av data.

Variabler. angi 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å denne kommandoen er vist i følgende liste.

Rem kompilator av hjelpefiler i CHM-format set help_compiler=c:\HTML Help Workshop\hcc.exe

For å trekke ut verdien av en variabel plasseres navnet mellom to prosenttegn, som vist nedenfor.

Rem-kompilator av hjelpefiler i CHM-format set help_compiler=c:\HTML Help Workshop\hcc.exe rem Prosjekthjelpefil for "Warehouse"-modulen store_hpj=help\sources\store\store.hpj rem Prosjekthjelpefil for " Sales" modul " set sales_hpj=help\sources\sales\sales.hpj rem Kompiler hjelpefiler %help_compiler% %store_hpj% %help_compiler% %sales_hpj%

Følgende liste viser hvorfor variabler er nyttige.

For det første lar de deg bruke et kort fragment som er synonymt med det i en batchfil i stedet for et langt fragment (for eksempel banen til hjelpefilkompilatoren). Det er i hvert fall praktisk.

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

Batchfilparametere er også variabler, men de skiller seg fra vanlige variabler ved at verdiene deres angis når batchfilen startes. I fremtiden, når vi snakker om variabler, spesielt om å jobbe med deres verdier, vil vi også mene kommandofilparametere, i det minste i fravær av eksplisitte forbehold om dette.

Når du skriver batchfiler, brukes ofte følgende teknikk: flere variabelverdier er angitt side om side (eller ispedd noen symboler eller linjer), for å oppnå en ny meningsfull verdi. Et eksempel er vist i følgende liste.

Rem Path til hjelpefilen kompilatoren sett help_compiler="c:\Program Files\HTML Help Workshop\hhc.exe" rem Banen til katalogen der hjelpefilprosjektene er plassert sett project_path=e:\work\projects\help- projects rem Vi kaller kompilatoren for å behandle et spesifikt prosjekt, rem hvis navn sendes i den første parameteren %help_compiler% %project_path%\%1.hpj

Sjekke forhold og velge alternativer. if og goto-kommandoer

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

Tilstandskontroll er nesten et nødvendig trinn når du lager batchfiler som bruker parametere. Før du starter arbeidet, må batchfilen generelt sørge for at riktig sett med parametere sendes til den. Ellers er det stor risiko for at det blir utført feil eller uten resultater, og brukeren vil bare lure på hva problemet er. Dessuten, hvis en batchfil sletter, flytter eller overskriver data, kan den til og med forårsake skade hvis parametrene er feil.

Følgende liste viser kommandofilen for kompilering av hjelpefilen som du allerede er kjent med. En sjekk for at den første parameteren ikke er tom, er lagt til i begynnelsen av kommandofilen. Vær oppmerksom på denne syntaksfunksjonen: sammenligningsoperasjonen bruker et dobbelt likhetstegn. Hvis den første parameteren ikke er tom, utføres goto-kommandoen, som "kaster" skallet til den angitte etiketten. I dette tilfellet er navnet på denne etiketten kompilert. Legg merke til at der en etikett vises, er navnet innledet av et kolon, men i goto-kommandoen er det ikke det. Hvis den første parameteren er tom, flytter skallet til neste linje, som gir en feilmelding. Og så til den neste, som overfører den helt til slutten av filen til en etikett med navnet bli ferdig.

@echo off rem Vi sjekker om parameteren er spesifisert hvis ikke "%1"=="" skal kompilere rem Hvis parameteren er tom, gir vi en feilmelding echo Prosjektnavnet til rem hjelpefilen er ikke spesifisert og gå til slutten av rem-kommandofilen til finish goto label finish rem Dette er en etikett som heter compile:compile rem Nedenfor er kompileringskommandoene rem Sti til hjelpefilen kompilatorsett help_compiler="c:\Program Files\HTML Help Workshop\hhc .exe" rem Banen til katalogen der hjelpeprosjektene er plassert filer set project_path=e:\work\projects\help-projects rem Ring kompilatoren for å behandle et spesifikt prosjekt, rem hvis navn sendes i den første parameteren %help_compiler% %project_path%\%1.hpj rem Dette er en etikett som heter finish: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 navnet på en ikke-eksisterende fil som en parameter, vil batchfilen bli fornøyd med dette og forsøke å kompilere. En bedre måte er å sjekke om en slik fil faktisk eksisterer. For dette formålet gir MS-DOS-kommandospråket et spesielt ord eksistere. Derfor er det bedre å skrive: hvis det finnes %1.hpj må du kompilere.

For det andre aktiv bruk av kommandoen gå til(det såkalte ubetingede hoppet) og etiketter forvirrer koden kraftig. Teknisk sett er de ikke dårlige, men å feilsøke og vedlikeholde en batchfil skrevet i denne stilen er ganske upraktisk. Derfor har programmerere lenge vurdert ubetinget hopp som en uønsket teknikk. Nedenfor vises en mer korrekt, fra et 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.

@echo off rem Sjekk om parameteren er satt hvis den ikke eksisterer %1.hpj (rem Hvis parameteren er tom, viser vi en feilmelding echo Dette hjelpefilprosjektet eksisterer ikke.) else (rem Nedenfor er kompilasjonskommandoene rem Path til hjelpefilen kompilatoren sett help_compiler="c:\Program Files\HTML Help Workshop\hhc.exe" rem Sti til katalogen der hjelpefilprosjektene er plassert sett project_path=e:\work\projects\help-projects rem Kall kompilatoren for å behandle et spesifikt prosjekt, rem hvis navn sendes i den første parameteren %help_compiler% %project_path%\%1.hpj)

Vær oppmerksom på fordypningen fra venstre kant. De er valgfrie, men gjør teksten til batchfilen mer lesbar.

La oss gi et annet eksempel på arbeid med sjekker. Følgende batchfil oppretter en katalog kalt hjelpefiler(anta, for å laste opp kompilerte hjelpefiler til 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?), tilordner batchfilen bak-utvidelsen til den . Men hvis katalogen hjelpe-filer.bak allerede eksisterte, så sletter batchfilen den (vi vil anta 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 help-files.bak md hjelpe-filer

Massefilbehandling. for kommando

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

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

Variabel Jeg kalt loopteller. På grunn av den unike syntaksen til kommandoen til, må navnet på looptelleren bestå av én bokstav. Dessuten, hvis vi skriver en batchfil, må vi sette et dobbelt prosenttegn foran navnet på looptelleren, men hvis vi bare skriver en kommando på kommandolinjen, så en enkelt.

Logikken til denne kommandoen er som følger. Etter ordet i området for endring av syklustelleren er indikert. I denne versjonen av kommandoen er dette en trippel av tall: startverdien til telleren, telletrinnet, grenseverdien til telleren. Når du utfører en kommando, vil skallet først tildele variabelen Jeg betydning 1 , og deretter ved hvert trinn i løkken vil den øke den med 1 til det overskrider 10 . Det vil åpenbart være ti slike trinn. Hvis vi spesifiserte et tall som telletrinn 2 , så vil loopen bli utført fem ganger. Ved hvert trinn i løkken utføres hoveddelen av løkken skrevet etter ordet gjøre. I eksemplet ovenfor er dette ekko-kommandoen, som viser gjeldende verdi av looptelleren.

Du kan sikkert tenke deg en situasjon der noe slikt faktisk er nødvendig, men vanligvis kommandoen til brukes til å iterere og behandle filer. Det må sies at i ganske enkle tilfeller utføres bulkfilbehandling ved hjelp av jokertegn. Hvis vi ønsker å erstatte alle filer i gjeldende katalog med 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. Følgende batchfil utfører denne operasjonen for alle htm-filer i underkatalogen til den gjeldende katalogen. Mer presist, i hele katalogtreet som er inni nettsted.

For /r-nettstedet %%i in (*.htm) gjør du ren %%i %%~ni.html

Nøkkel /r indikerer behovet for å gå gjennom katalogen nettsted og alt dets innside. Hvis du ikke spesifiserer det (men da har du ikke lov til å spesifisere en katalog), vil kun filer i gjeldende katalog bli behandlet. Utvalget av looptellerverdier i denne kommandovarianten er settet med alle filer med utvidelsen .htm, plassert inne i en katalog (mer presist, et tre) nettsted. En merkelig oppføring ved første øyekast ~ni betyr at fra verdien av variabelen Jeg Du trenger bare å velge filnavnet. MS-DOS-kommandospråket gir flere slike modifikatorer, for eksempel skriving ~xi angir filtypen. Alle modifikatorer er beskrevet i kommandohjelpen til.

Brødteksten til en løkke kan bestå av flere kommandoer i parentes.

@echo off for /r nettsted %%i in (*.htm) do (rem Skriv ut filnavnet echo %%i rem Gi nytt navn til filen ren %%i %%~ni.html)

Overfører kontroll til en annen batchfil. ringe kommando

Det er mulig å kalle en annen batchfil fra en batchfil. Kommandoen for dette er anrop. Flott, variablene spesifisert i den kallende batchfilen er "synlige" for den som kalles. Og omvendt, etter at den oppringte filen er ferdig med arbeidet og returnerer kontrollen til den som ringer, vil sistnevnte "se" variablene som er overlatt til den av den kalte "arv". Dette lar batchfilutvikleren gjøre noe som dette: Hvis flere kommandofiler må bruke de samme verdiene, for eksempel stier til noen filer, kan de plasseres i en egen kommandofil, som vil spille rollen som en konfigurasjonsfil. Hver fungerende kommandofil vil begynne med et kall til konfigurasjonsfilen. Fordelen er at når du endrer stier, trenger du bare å gjøre endringer i én konfigurasjonsfil, og ikke til mange arbeidere.

"Konfigurasjon" batchfil config.bat.

Rem Path til hjelpefilen kompilatoren sett help_compiler="c:\Program Files\HTML Help Workshop\hhc.exe" rem Banen til katalogen der hjelpefilprosjektene er plassert sett project_path=e:\work\projects\help- prosjekter

"Fungerer" batchfil.

@echo off rem Sett opp variabler kall config.bat rem Sjekk om parameteren er satt hvis den ikke eksisterer %1.hpj (rem Hvis parameteren er tom, viser vi en feilmelding echo Dette hjelpefilprosjektet eksisterer ikke.) else ( rem Nedenfor er kompileringskommandoene rem Vi kaller kompilatoren for å behandle et spesifikt prosjekt, rem hvis navn sendes i den første parameteren %help_compiler% %project_path%\%1.hpj)