Hvordan man skriver bat-filer. Sådan laver du en bat-fil

Folk, der er bekendt med begrebet batch-fil, ved, at BAT-filer kan forenkle livet betydeligt og spare tid, hvis du ved, hvordan man skriver og bruger dem korrekt. I denne artikel vil jeg tale om, hvordan du opretter BAT-filer og introducerer dig til almindelige fejl, der normalt opstår, når du skriver dem.

Oprettelse af en BAT-fil er meget enkel. Bare åbn Notesblok og gem et blankt ark med .bat-udvidelsen, vælg indstillingen Gem som... og skriv i feltet Filnavn noget, der ender på .bat, for eksempel test.bat.
Angiv filtypen som på skærmbilledet nedenfor - Alle filer. Gem og modtag en BAT-fil.

Du kan redigere BAT-filen i Notesblok eller en hvilken som helst anden teksteditor, der fokuserer på at arbejde med kode.

Lad os nu gå direkte til praktisk information. Mange mennesker på internettet leder efter et svar på spørgsmålet: Hvordan håndterer man mellemrum i BAT-filer? . I stier til mapper og eksekverbare filer forårsager tilstedeværelsen af ​​et mellemrum en fejl. Det mest almindelige svar er: Indsæt stien i anførselstegn. Og dette svar er ikke korrekt. Sandt nok vil nogle skummer fra munden og hævde, at det virker. Så to hvorfor dukkede op - hvorfor det ikke er sandt, og hvorfor nogle vil være det.

På Windows (såvel som på UNIX) registreres programmer, der er installeret på systemet, tilsvarende af systemet. Derfor kan nogle af de installerede programmer startes med en simpel kommando fra en BAT-fil eller fra Kør-appletten i Start-panelet. Et sådant program er Firefox:

start firefox

Hvis du efter denne kommando skriver stien til den eksekverbare fil, sker der følgende: Firefox-browseren starter og forsøger at behandle anmodningen, det vil sige filen, hvis sti er angivet. Det vil sige, hvis du angiver følgende:

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

Browseren åbnes, uanset hvad den siger efter start af firefox. Derfor vil nogle kammerater forsikre, at alt fungerer fantastisk. Men hvis du tager et bærbart program, vil situationen være en helt anden. Lad os tage Filezilla ftp-klienten som et eksempel. Da systemet ikke kender til programmet, er ovenstående linje

start filezilla

vil ikke virke. For at køre et program, der er ukendt for systemet, skal du angive stien til det:

start D:\FileZilla\FileZilla.exe

Lange navne i bat-filer

Lad os nu tale om stier og rum. Den første måde at undgå dette problem på er at bruge et kort navn.

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

I eksemplet er der to navne med mellemrum. Lad os erstatte dem med korte. Reglerne for oprettelse af korte navne er som følger: det korte navn bruger de første seks tegn i navnet, eksklusive mellemrum, efter navnet er mappens serienummer angivet ved hjælp af symbolet ~ . Da mine Programfiler og Sound Club-mapper er enkeltstående, vil det se sådan ud:

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

Hvis der er to mapper i nærheden, for eksempel Sound Club og Sound Clown, skal du følge reglerne, i eksemplet ovenfor skal du angive SoundC~2, da Sound Club i dette tilfælde vil være det andet navn (navne tælles i alfabetisk bestille).

Men denne metode er ubelejlig, fordi du skal angive serienumre. Situationen med programfiler er mere eller mindre normal. Få mennesker vil finde to lignende mapper på systemdrevet. Men hvis du beslutter dig for at installere flere Mozilla-produkter på din computer. Du vil ende med flere mapper, for eksempel:

Mozilla Firefox Mozilla Thunderbird Mozilla Sunbird

Korte navne for dem vil være

Mozill~1 Mozill~2 Mozill~3

Forestil dig nu, at du skrev en BAT-fil, der nævner disse programmer. Hvis du afinstallerer Firefox, vil de resterende poster ikke længere virke, og hvis du afinstallerer Thunderbird, vil indgangen til Sunbird ikke længere virke. Kort sagt, metoden med korte navne er ikke vores måde.

Mellemrum og citater i bat-filer

Citater fungerer faktisk, men ikke på de måder, der normalt anbefales. Følgende anbefales normalt:

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

Så kommandoen virker ikke, for hvis du ser på hjælpen til den (start /? ), så vil du i hjælpen se følgende:

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

Som du kan se, er den første parameter vinduestitlen, og den er i anførselstegn. Denne parameter er valgfri, men det anbefales stadig at angive den () for at undgå fejl ved udførelse af kommandoen. Du behøver ikke at skrive noget i citaterne. Det bliver sådan her:

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

Muligheden for at omslutte alle navne med mellemrum separat i anførselstegn vil også fungere:

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

Men i nogle tilfælde virker ingen af ​​ovenstående. I sådanne tilfælde kan jeg anbefale at bruge cd-kommandoen. Gå til systempartitionen, brug derefter cd til mappen Programfiler og kør programmet (start):

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

Jeg tror, ​​at denne metode vil fungere overalt. Nu et par vigtige punkter mere. Lad os sige, at du har oprettet en batchfil, der starter tre programmer, og du skal midlertidigt udelukke lanceringen af ​​et af de tre. Dette kan gøres ved at slette linjen eller kommentere den ud. Den første metode er vandalisme, og den anden, se nedenfor.

start firefox start jetaudio rem start defraggler

I dette tilfælde er lanceringen af ​​programmet Defraggler.exe, der er installeret på systemet, deaktiveret. Kommenter linjer ved at angive rem-kommandoen i begyndelsen af ​​linjen. Alle BAT-filer udføres i et konsolvindue. For at få det til at forsvinde, når kommandoerne er fuldført, skal du ikke glemme at skrive exit-kommandoen til sidst.

start firefox start jetaudio rem start defragler exit

Start af programmer fra en bat-fil

I den første del af artiklen talte jeg i generelle vendinger om BAT-filer. Nu er det blevet klart, hvad det er, og hvad det spises med. I anden del vil vi tale om mere specifikke ting. For eksempel, hvordan man bruger en BAT-fil til at starte flere applikationer med bestemte indstillinger eller installere et program automatisk for ikke at spilde tid på svar som Accepterer du vilkårene i licensaftalen? og tryk ikke på unødvendige knapper.

Adskillige måder at starte applikationer på ved hjælp af en BAT-fil er beskrevet ovenfor. Den allerførste er en kort kommando til at starte programmet installeret på systemet.

start firefox

Dette virker ikke altid. Derfor kan denne teknik anvendes fuldt ud på et specifikt system, men den er ikke egnet som en universel løsning. Hvis dit mål er at få BAT-filen til at fungere overalt og altid, skal du bruge fulde stier:

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

Jeg bemærkede også, at BAT-filen skal indeholde en kommando for at fuldføre:

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

Kører programmer i bat-filer med parametre (nøgler)

Du kan ikke kun køre programmet, men også give det yderligere kommandoer, når du starter det. For eksempel, kommandoen til at køre minimeret:

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

At kommando betyder i dette tilfælde at angive nøglen. Tasten er angivet med en skråstreg efter hovedkommandoen (kommando / tast). Hovedkommandoen i dette tilfælde er start. Sandt nok virker min-tasten kun i halvdelen af ​​tilfældene, fordi den relaterer specifikt til startkommandoen og ikke til de programmer, som denne kommando starter.

Generelt er der mange taster, og nøglesættene til forskellige programmer kan variere betydeligt. Der er dog et par almindelige. For eksempel hjælpetasten (/? eller /help). For at se, hvordan denne nøgle virker, lad os se på et praktisk eksempel. Åbn konsollen (Klik + R , indtast cmd , derefter Enter ), og skriv følgende i konsollen:

Start /?

Konsollen viser en liste over gyldige nøgler med kommentarer til startkommandoen.

Vær opmærksom på /wait-kontakten. I nogle tilfælde er det simpelthen uerstatteligt. For eksempel besluttede du at bruge en BAT-fil til at udpakke arkivet med programmet og køre netop dette program. Batchfilen vil indeholde to kommandoer - til udpakning og til lancering. Da kommandoerne vil blive udført næsten samtidigt, når BAT-filen køres, vil arkivet ikke have tid til at pakke ud, og der vil ikke være noget at køre. Derfor vil der være en fejl. I dette tilfælde vil nøglen komme til undsætning /vente:

Således vil systemet først udføre den første handling, vente på, at den er fuldført, og først derefter fortsætte til den anden. Hvis du har brug for at vente en bestemt periode, er det nemmere at bruge et konsolværktøj. På det rigtige sted i BAT-filen skal du skrive følgende kommando (tallet er antallet af sekunder):

start Sleep.exe 15

Du kan gøre meget med nøgler. Det er muligt at installere applikationer. For at gøre dette bruges flere taster afhængigt af typen af ​​installationsprogram, der bruges til at installere programmet på computeren:

/S /s /q /silent og en række andre

I nogle tilfælde kan det være meget praktisk. Avast antivirus har en stille installationsmulighed i virksomhedsversionen. Den gratis (hjemme) version har angiveligt ikke en lydløs installation. Men hvis du ved, hvordan InstallShield-installationsprogrammet fungerer, vil du forstå, at dette er en canard, da dette installationsprogram i sig selv understøtter /S silent installation switch. Det betyder, at alle produkter fremstillet på dens basis gør det samme. Og Avast er ingen undtagelse. Du skal bare oprette en fil med indholdet i mappen med Avasts BAT

start avast.exe /S exit

du starter det, og programmet installeres på din computer med stort set ingen input fra dig. På denne måde kan du skrive en hel liste af programmer til lydløs installation og spare tid, for eksempel på at geninstallere systemet. I artiklen kan du få mere detaljeret information om tasterne.

Der er andre muligheder for at styre programmer ved hjælp af BAT-filer. Du kan starte et program ved at bede det åbne en fil ved opstart. Jeg bruger denne metode, når jeg udvikler hjemmesider. Det er meget praktisk, når hele dit værktøjssæt åbner de nødvendige dokumenter og mapper med et enkelt klik:

rem forbindelse til ftp-server start /min D:\FileZilla\FileZilla.exe "ftp://login:password@server" rem åbning af index.php i Firefox start C:\"programfiler"\"mozilla firefox"\firefox.exe "http://localhost/site_folder/index.php" rem åbning af start.html i en teksteditor start /min C:\"Program Files"\text_editor.exe "E:\server\site_folder\index.html" gen at åbne mappen med webstedsfiler start /min E:\server\site_folder rem konsol udgang Afslut

Jeg bemærker, at alle de ovenfor beskrevne teknikker kan bruges i forskellige kombinationer og kombinationer.

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

Men det er vigtigt at huske: alt relateret til udførelsen af ​​programmet lanceret 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 tilbyde din gennemgang konverteren af ​​BAT-filer til applikationer i .exe-formatet - . En BAT-fil er ikke altid æstetisk tiltalende, men ved hjælp af en konverter kan du pakke en batch-fil ind i en exe-fil og dekorere den med et hvilket som helst ikon efter eget valg.

Jeg stødte på en anden BAT til EXE-konverter, du kan betragte den som et alternativ til det forrige program: Advanced Bat To Exe Converter

I denne artikel vil vi se på en så nyttig ting som " batch-fil" Lad os først definere, hvad en bat-fil er. Batch- eller batchfiler er simple tekstfiler, der indeholder sæt af kommandoer ( instruktioner) tolk og har udvidelsen bat eller cmd ( cmd virker kun i NT-familiens OS'er). Du kan oprette og redigere sådanne filer ved hjælp af en almindelig notesblok eller en hvilken som helst anden teksteditor.

Nu kan du spørge, hvorfor skal du være i stand til at skrive sådanne bat-filer? Og hvorfor er de nødvendige? Jeg vil prøve at forklare.

For det første bruges de til at gøre arbejdet lettere, dvs. for eksempel skal du konstant udføre nogle operationer hver dag ( for eksempel oprette et arkiv af bestemte dokumenter), ved hjælp af en kropsfil kan dette automatiseres, og du vil ikke længere tage del i det.

For det andet er disse batchfiler meget kraftfulde ( hvis du selvfølgelig ved, hvordan du skriver dem), dvs. Du kan endda skrive et godt program ( Jeg mener med hensyn til funktionalitet). Personligt hjælper de mig meget i mit arbejde, og jeg glemte simpelthen nogle ting, da jeg gjorde det manuelt.

Lad os nu gå direkte til det grundlæggende i disse batchfiler. Hvordan oprettes de? Du skal bare oprette et simpelt tekstdokument, åbne det og straks gå til fanen " Fil->gem som", indtast i stedet for udvidelsen " Tekst document.txt", For eksempel " Tekst document.bat" og gem, så vi får en batchfil med filtypenavnet .bat, men den gør ikke noget endnu.

Til at begynde med vil jeg give et eksempel på en batchfil, som jeg bruger på mit arbejde til at 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

Nu vil jeg fortælle dig lidt om, hvad denne batchfil gør. WinRar starter, derefter følger Winrar-kommandoer:

  • a - dette er for at tilføje til arkivet;
  • -r - behandle undermapper;
  • -dh - åbne delte filer;
  • -ed - tilføj ikke tomme mapper;
  • ÅÅÅÅ-mm-dd - tilføj den aktuelle dato til arkivnavnet ( datoformat);
  • E:\arhaccounts\ - sti, hvor det endelige arkiv vil blive placeret;
  • d:\accounts\*.doc - sti og maske af filer, der skal arkiveres.

I dette tilfælde arkiverer vi alle Word-, Excel- og tekstfiler, vi behøver ikke at arkivere resten. Vores arkivering går til en anden disk, og vi kopierer også det resulterende arkiv til en anden computer, så arkiverne gemmes på et andet kontor. Kopieringen foregår over netværket, så computeren, som arkivet kopieres til, skal være tændt. For at gøre dette kan du bruge følgende kommando:

Kopiér E:\arhaccounts\*.rar \\namecomp\arhiv\

Eksempler på kommandoer til bat-filer

Lad os nu se på de grundlæggende kommandoer, som du kan bruge.

Hvis du har brug for at slette en fil, skal du skrive følgende:

Del d:\fil\test.doc


For at slette hele mappen, skriv:

Rd d:\fil\

Hvis du har brug for at slette alt fra en eller anden mappe hver gang, så brug denne:

Ekko Y| del d:\fil\

  • del d:\file\ - dette er præcis sletning af alle filer;
  • ekko Y| - kommandoen bekræfter sletningen pga Hvis du ikke indtaster denne kommando, vil du se en meddelelse, der bekræfter sletningen - "Fortsæt", og du skal besvare dette spørgsmål hver gang.

Lad os nu se på et mere kompliceret eksempel, hvor betingelsen allerede er opfyldt:

@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 FINDER 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 ende

Nu vil jeg forklare, lad os sige, at du skal udpakke test.rar-arkivet, som vil indeholde mange filer, men hvis der er en 123.rar-fil der, skal den udpakkes til roden af ​​drev C, og resten af ​​filerne forbliver uberørte i den samme mappe.

For at kræve @echo off-kommandoen, så intet reflekteres på skærmen ( dybest set, hvis du ikke har brug for det, kan du undlade at skrive denne linje). Dernæst starter vi Winrar og pakker test.rar-arkivet ud i testmappen. Så kommer betingelsen hvis i testmappen ( efter udpakning test.rar) vi ikke har filen 123.rar, så udfører vi blot batchfilen og går til linie: 1 og sletter så blot filen test.rar, da det ikke er nødvendigt pga. Vi har allerede pakket alt, hvad vi skal bruge. Men hvis der er en fil 123.rar der, så går udførelsen af ​​batchfilen til linje: 2, hvorefter filen 123.rar allerede er pakket ud til roden af ​​drev C. Med andre ord har vi betingelsen opfyldt , hvis der er en fil, så gør dette, hvis der ikke er nogen fil, gør dette. Lad os sige, at hvis vi ikke angiver betingelsen i dette eksempel, vil vores batchfil give en fejl, når vi ikke har filen 123.rar i denne mappe.

Lad os nu se på et eksempel: Lad os sige, at du skal flytte filer fra en mappe på drev D til et flashdrev hver gang. Hver gang du bliver nødt til at gå til min computerdrev D, skal du vælge den ønskede mappe, vælge alle filerne fra den og klippe den, og så bare gå til flashdrevet og indsætte den. Ved hjælp af en body-fil gøres dette med et enkelt klik ( med én betingelse, at flashdrevet hver gang vil være f.eks. disk G eller hvad du nu har). Her er et eksempel på sådan en batch-fil:

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

Og alle filer med doc-udvidelsen, der er placeret i mappen D:\catalog, vil blive flyttet til flashdrevet. Nu vil jeg sige, at du kan bruge scripts i batchfiler ( scripts) ved at bruge Windows Scripting Host og om nødvendigt for eksempel at vise en besked, efter at filer er blevet kopieret ( tidligere eksempel) indsæt dette:

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

Faktisk kan man tale meget om at skrive batch-filer, og det kan selvfølgelig ikke passes ind i én artikel, her viste jeg kun de principper, der bruges, når man skriver bat-filer, så at sige grundlaget. Hvis du vil vide flere kommandoer til at skrive batchfiler, kan du nemt se dem ved at skrive ( Start - Kør - cmd) hjælpekommandoen, men der er selvfølgelig ikke alle kommandoer, der kan bruges i batchfiler. Held og lykke med at skrive BAT-filer ( body shirts).

Fortsættelse af emnet i artiklen -

Brug af bat-filer (også kendt som "bat-fil" eller "batch-fil") kan ofte gøre dit arbejde lettere, for eksempel automatiser softwareinstallation i henhold til foruddefinerede parametre; dato og klokkeslæt synkronisering; køre kommandosekvenser osv. Men for at bruge sådanne scripts skal du være i stand til at oprette dem. I deres kerne er filer med filtypenavnet .bat et sæt konsolkommandoer, de samme som dem, der bruges på kommandolinjen.

Artiklen diskuterer tre metoder til at oprette .bat-filer:

  1. Brug af kommandolinjen.
  2. Brug af Notesblok-programmet.
  3. Brug af "Dr.Batcher"-værktøjet.

Trin 1. For at starte kommandolinjen i menuen "Start" skal du bruge dialogen "Søg i programmer og filer". Du skal indstille cmd-søgeparameteren og venstreklikke på ikonet i afsnittet "Programmer".

Trin 2. Det anbefales at bruge en separat mappe til at gemme skrevne batchfiler, så vælg en placering på din harddisk og opret en speciel mappe ved at indtaste kommandoen "MD D:\Bat".

På en note! Kommandoen indtastes uden anførselstegn, et mellemrum tilføjes først efter brugM.D. I dette tilfælde er en mappe med navnet « Flagermus"vil blive oprettet på diskenD. Kommandolinjen er ufølsom mellem store og små bogstaver, det vil sige resultatet af udførelse af "MDD:\Flagermus", "mdD:\Flagermus" og "mdd:\Bat" vil være det samme.

Trin 3. Opret selve batchfilen ved at bruge kommandoen "@echo off > D:\Bat\probnik.bat".

På en note! I dette tilfælde er sagen vigtig, når du angiver placeringsstien, det vil sige mappen "flagermus", "Flagermus" og "BAT" - tre uafhængige og helt forskellige mapper. Hvis du peger på en ikke-eksisterende mappe, vil kommandoen ikke blive udført. Bemærk, at der heller ikke kommer nogen fejlmeddelelse.

Trin 4. For at ændre indholdet af en fil skal du åbne den placering, hvor den er gemt, kalde kontekstmenuen og vælge linjen "Skift".

Opret en batch-fil ved hjælp af Notesblok

Trin 1. For at starte notesblokken skal du gå til menuen "Alle programmer", vælge "Tilbehør" og klikke på startikonet.

Trin 2.

Lær hvordan du opretter en fil uden megen programmeringsviden fra den nye artikel -

Som et eksempel foreslår vi, at du bruger følgende kode, som viser et billede af en stjerne:

« @ekko slukket

mode con cols=32 linjer=50

titelstjerne!

for %%i i (

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

) gør ekko %%i

pause > null

Opmærksomhed! Koden skal indtastes uden anførselstegn. Kontroller altid kommandosyntaksen. Hvis du glemmer at sætte et komma i slutningen af ​​en linje, vil det, når programmet er udført, smelte sammen med det næste.

Trin 3. Gem den resulterende fil i den ønskede mappe. For at ændre opløsningen skal du bruge linjen "Filtype", vælge "Alle filer" i den, og når du indtaster et navn, skal du efter punktum angive "bat".

Oprettelse af en batch-fil ved hjælp af "Dr.Batcher"

Det angivne softwareprodukt er betalt, men giver mulighed for at bruge en testversion i 30 dage.

Trin 1. For at oprette en fil, brug menuen "Filer", punktet "Ny..." eller tastekombinationen "Ctrl+N".

Trin 2. Marker "Tøm batchfil" i dialogboksen og klik på "OK".

Trin 3. Angiv hvilke kommandoer bat-filen skal udføre.

På en note! Den højre ramme indeholder nøglekommandoer, som du kan bruge, når du skriver kode. Du skal bare vælge den du ønsker og klikke på "IndsætCommand", som hjælper med at spare tid, når du arbejder.

Trin 4. Gem den resulterende fil i den ønskede mappe.

Vigtig! Bemærk venligst, at dette værktøj giver dig mulighed for at fejlsøge programmet på farten. Brug blot menuen "Batch" for at starte den allerede indtastede sekvens. Fremskridtene vises i nederste ramme. Når du bruger varen "UdføriEksternWindow..." vil udføre batchfilen, svarende til at starte den ved hjælp af operativsystemet.

Konklusion

Vi har beskrevet tre måder at oprette filer med filtypenavnet .bat. To af de nævnte metoder er standardmetoder, der er tilgængelige med Windows, den ene kræver installation af yderligere software. Evalueringen af ​​hver metode er angivet i den sammenfattende tabel.

Information\NavnKommandolinjeNotesbogDr. Batcher
LicensLeveres med WindowsLeveres med WindowsBetalt
russisk sprogAfhængig af Windows-versionAfhængig af version
Oprettelse af en batchfilJaJaJa
Redigering af en batchfilIngenJaJa
Interface bekvemmelighed (fra 1 til 5)4 4 5

Video - Oprettelse af en Bat-fil

Batch- eller batchfiler er almindelige tekstfiler, der indeholder sæt tolkekommandoer og har bat- eller cmd-udvidelsen (cmd virker kun i NT-familiens operativsystemer). Du kan redigere sådanne filer ved hjælp af notesblok eller en hvilken som helst anden teksteditor.

Åbn notesblok og skriv følgende to linjer:

@echo Denne batchfil
@pause

Denne batch-fil
Tryk på en vilkårlig tast for at fortsætte...

Efter at have trykket på en vilkårlig tast, lukkes vinduet, fordi bat-filen er afsluttet.
Bemærk venligst, at hundesymbolet før hver kommando i bat-filen angiver, at selve kommandoen ikke skal vises på skærmen, men kun resultatet af dens betjening skal vises. For at eksperimentere skal du fjerne hundekarakteren fra begyndelsen af ​​hver linje, gemme og køre den resulterende bat-fil.

Kommandoer brugt i bat-filer

Listen over kommandoer, der kan bruges i bat-filer, kan ses ved at indtaste kommandoen på kommandolinjen (Start - Kør - cmd for Windows NT-familien eller Start - Kør - kommandoen for 9x-linjen)

Resultatet af hjælpen er en liste over tilgængelige kommandoer med korte forklaringer til dem. For at få mere detaljeret information om den kommando, du er interesseret i, skal du indtaste hjælp kommando_navn på kommandolinjen. For eksempel, for at få detaljeret hjælp til AT-kommandokontakterne, skal du køre følgende kommando:

Som et resultat vil en liste over nøgler til at køre AT-kommandoen fra bat-filen blive vist på skærmen.
Hvis bat-filen køres under Windows (ikke ren DOS), så kan du køre alle programmer eller åbne filer fra den. For eksempel skal du automatisk åbne bat-filens logfil, når den er færdig med sit arbejde. For at gøre dette skal du blot inkludere følgende kommando i bat-filen som den sidste linje:

start filnavn.txt

Resultatet af at udføre denne kommando vil være åbningen af ​​filen file_name.txt, og selve bat-filen vil fuldføre sit arbejde. Denne metode er god, hvis logfilen er lille, ellers vil Notepad nægte at åbne den, hvilket foreslår, at du bruger WordPad. Men dette problem kan også løses, som det vil blive vist i yderligere eksempler.

Sådan automatiseres lanceringen af ​​bat-filer

Meget ofte er det nødvendigt at automatisere lanceringen af ​​bat-filer for at udføre rutineoperationer. For at køre bat-filer efter en tidsplan er Scheduler, der er inkluderet i standard Windows-pakken, bedst egnet. Med denne hjælp kan du meget fleksibelt konfigurere lanceringen af ​​en batchfil på bestemte dage eller timer med et bestemt interval. Du kan oprette flere tidsplaner osv.

For at starte batchfiler lokalt kan du bruge løsninger fra tredjeparter; heldigvis er der rigtig mange betalte og gratis alternativer til standardplanlægningsprogrammet.

Batch-filer kan også bruges som login-scripts i domæner. Når de bruges på denne måde, vil de blive udført hver gang brugeren logger på netværket, uanset hans ønske. Med deres hjælp kan du automatisere indsamlingen af ​​oplysninger om maskiner eller software installeret på brugercomputere, kraftigt ændre Windows-indstillinger, installere software uden at brugeren bemærker det og automatisere løsningen af ​​andre opgaver, der ville tage meget tid at udføre manuelt.

Sådan opretter du en fil med et vilkårligt navn fra en bat-fil

Et omdirigeringssymbol bruges til at oprette en fil, mens en batchfil kører. Det ser sådan ud:
>
De der. for at oprette en fil skal du omdirigere strømmen fra skærmen til filen. Dette kan gøres ved hjælp af følgende kommando:

@echo Start fil>C:\1.txt

Efter udførelse af denne kommando vil en tekstfil med linjen Startfil blive oprettet i roden af ​​drev C.
Når du opretter en fil, kan du bruge systemvariabler eller dele af dem i dens navn. For eksempel kan du oprette en rapportfil om driften af ​​en bat-fil med et navn svarende til den dato, hvor bat-filen blev lanceret. For at gøre dette kan du bruge følgende linjer i bat-filen.

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

Disse to linjer fungerer sådan her. Først opretter vi en datetemp-variabel i hukommelsen, som vi tildeler 10 tegn fra højre mod venstre fra DATE-systemvariablen. Således indeholder den midlertidige variabel datetemp nu kun den aktuelle dato. Med den næste linje omdirigerer vi outputtet af priksymbolet til en fil, hvis navn er taget fra datetemp-variablen, og txt-udvidelsen er specificeret eksplicit. Filen vil blive oprettet på systemdisken på den computer, hvor bat-filen udføres.

Når en administrator indsamler oplysninger om computere på netværket, vil det være mere praktisk at tilføje computernavnet til filnavnet. Dette kan nemt gøres ved hjælp af følgende kommando:

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

Denne kommando vil, mens den udfører en batchfil, oprette en tekstfil på drev C med navnet på den computer, hvor batchfilen kører.
For at oprette en fil med et bestemt navn, kan du bruge alle systemvariabler eller oprette dine egne baseret på systemvariabler og/eller andre data.

Sådan opretter du en mappe fra en bat-fil

For at oprette en mappe skal du bruge MKDIR-kommandoen eller dens forkortede tilsvarende MD. For at oprette en mappe fra en bat-fil skal du bruge følgende kommando:

Efter at have udført denne kommando, oprettes en mappe med mappenavn i den mappe, hvorfra bat-filen blev startet. For at oprette en fil på et andet sted end det sted, hvor du startede bat-filen, for eksempel i roden af ​​drev D, skal du bruge en eksplicit indikation af placeringen af ​​den nye mappe. Kommandoen vil se sådan ud:

MD D:\Mappenavn

Når du opretter mapper, kan du bruge systemvariabler. For eksempel kan du oprette en mappe i roden af ​​drev D med navnet på den aktuelle bruger. For at gøre dette skal du bruge variabelen %USERNAME%, og kommandoen vil se sådan ud:

MD D:\%BRUGERNAVN%

Du kan yderligere komplicere kommandoen og oprette en mappe med navnet på den aktuelle bruger på systemdrevet på hans computer. Kommandoen til dette vil se sådan ud:

MD %SYSTEMDRIVE%\%USERNAME%

Når du opretter mapper eller filer, kan du bruge alle systemvariabler eller dele deraf. Følgende eksempel viser oprettelsen af ​​en mappe på systemdrevet på brugerens computer med et navn svarende til den aktuelle dato.

sæt datotemp=%dato:~-10%
MD %SYSTEMDRIVE%\%datetemp%

Dette design fungerer som følger.
Den første kommando opretter en datetemp-variabel i hukommelsen, som vil blive ødelagt, når bat-filen er færdig med at køre. Indtil bat-filen er færdig med sit arbejde, er det muligt at arbejde med værdien af ​​denne variabel. Datetemp-variablen er tildelt 10 tegn fra højre mod venstre for DATE-systemvariablen, dvs. fra den aktuelle dato. DATE-variablen har formatet Dag DD.MM.ÅÅÅÅ. De første tegn til venstre er navnet på ugedagen, så vi kasserer dem og tildeler kun den aktuelle dato til den midlertidige variabel datetemp.
Dette begrænser ikke listen over muligheder, når du opretter mapper. Du kan manipulere variabler, som du vil, ved at oprette mapper med unikke, letlæselige navne. Du kan få en liste over alle variabler ved at bruge SET-kommandoen.

Sådan omdirigeres resultatet af kommandoudførelsen til en fil

Ofte, når du udfører en kompleks bat-fil i automatisk tilstand, kan det af mange årsager være svært at kontrollere resultaterne af dens arbejde. Derfor er det lettere at skrive resultaterne af batchfilkommandoer til en tekstfil (logfil). og analyser derefter den korrekte funktion af bat-filen ved hjælp af denne log.
Det er ret simpelt at omdirigere resultatet af bat-fil-kommandoer til en logfil. Det følgende vil vise, hvordan dette kan gøres.
Opret en bat-fil med følgende indhold (kopier disse linjer til Notesblok og gem filen med bat-udvidelsen):

@ekko slukket
ekkostart %tid%
echo Opret test.txt
ekkotest>C:\test.txt
echo Kopier Test.txt til Old_test.txt
kopi C:\test.txt C:\Old_test.txt
ekko stop %tid%

Den første linje deaktiverer outputtet af selve kommandoerne. Således vil kun resultaterne af deres eksekvering blive skrevet til logfilen.
Den anden linje skriver til logfilen starttidspunktet for batchfilen.
Den tredje linje skriver til logfilen en forklaring om, at følgende kommando vil oprette en test.txt-fil
Kommandoen fra den fjerde linje opretter en fil test.txt fra roden af ​​drev C. Filen oprettes f.eks. Denne kommando skriver ordet test til filen C:\test.txt
Den femte linje udskriver til logfilen en forklaring om, at følgende kommando kopierer en fil fra en placering til en anden.
Kommandoen i sjette linje kopierer den oprettede fil C:\test.txt til filen C:\Old_test.txt, dvs. en kopi af filen oprettes under et nyt navn.
Den sidste, syvende linje indeholder en kommando til at vise fuldførelsestidspunktet for batchfilen. Sammen med registreringen af ​​starttidspunktet for batchfilen i logfilen, gør disse to tidsværdier det muligt at estimere driftstiden for batchfilen.

Gem denne batchfil med et navn som 1.bat
Lad os antage, at vi gerne vil gemme en rapport om driften af ​​en batchfil i en separat mappe og skrive en rapport hver dag med et nyt filnavn, så vi kan få adgang til loggene for tidligere dage på en hvilken som helst dag. Desuden vil jeg gerne have navnet på logfilen i form af datoen for driften af ​​batchfilen. For at implementere alt dette, lad os oprette en mappe på drev C (for eksempel) ved navn LOG, dvs. den fulde sti til den vil se ud som C:\LOG. Vi kører den oprettede batchfil 1.bat med følgende kommando:

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

Hvis batchfilen vil blive lanceret fra Scheduler, skal du angive den fulde sti til bat-filen. Husk at hvis der er mellemrum i stien, skal du bruge enten anførselstegn eller 8.3 format. Det vil sige, at hvis stien til bat-filen for eksempel er C:\Program Files\1.bat, skal du i Scheduler-kommandolinjen for at køre bat-filen angive en af ​​følgende linjer:

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

Efter at have kørt 1.bat-filen oprettes en fil i mappen C:\LOG med et navn svarende til datoen, da bat-filen blev lanceret, f.eks. 01/13/2004.txt Dette vil være en rapport om betjening af 1.bat batch-filen
At køre bat-filen, som et eksempel er vist i den første liste øverst på siden, ved hjælp af ovenstående kommando, vil føre til oprettelse af en logfil med følgende indhold:

Start 19:03:27.20
Opret test.txt
Kopier Test.txt til Old_test.txt
Filer kopieret: 1.
Stop 19:03:27.21

For at omdirigere resultaterne af en bat-fil til en logfil, skal du bruge omdirigeringssymbolet > Syntaksen er som følger:

Sti\Filnavn.bat>Sti\LogFilnavn.txt

Logfiltypen kan være hvad som helst. Hvis det ønskes, kan en rapport om udførelsen af ​​et batchjob endda formateres som en html-side (de tilsvarende tags kan udskrives til en logfil på samme måde som kommentarer blev outputtet i eksempel 1.bat) og kopieret til en virksomhed server.

Sådan reagerer du automatisk på en bekræftelsesanmodning

Nogle kommandoer kræver bekræftelse af en potentielt farlig handling, når de udføres. For eksempel vil kommandoer som format eller del først bede om bekræftelse før videre udførelse. Hvis en af ​​disse kommandoer udføres i en batchfil, vil bekræftelsesprompten stoppe batchfilen i at udføre, og den vil vente på, at brugeren vælger en af ​​de givne muligheder. Desuden, hvis resultatet af at udføre en batchfil omdirigeres til en logfil, vil brugeren ikke se en bekræftelsesanmodning, og batchfilen vil fremstå som frossen.

For at rette sådanne problemer kan du omdirigere det ønskede svar til kommandoen. De der. udfør den omvendte handling for at omdirigere outputtet af kommandoen til en fil.
Lad os se på et eksempel på, hvordan en anmodning om at bekræfte en potentielt farlig handling ser ud. Lad os for eksempel oprette en mappemappe på drev C. Lad os oprette eller kopiere to filer ind i den. Åbn derefter kommandolinjen og kør følgende kommando:

Denne kommando skal fjerne alle filer fra den angivne mappe. Men først bliver du bedt om at bekræfte følgende indhold:

C:\Folder\*, Fortsæt ?

Kommandoen stopper med at udføre, indtil der trykkes på tasten Y eller N. Når en batchfil udføres i automatisk tilstand, stopper dens eksekvering.
For at undgå dette bruger vi omdirigering. Omdirigering udføres ved hjælp af symbolet
Den lodrette linje angiver, at i stedet for at vise symbolet på skærmen, skal det "gives" til kommandoen efter symbolet. Lad os tjekke omdirigeringen. Kør følgende kommando på kommandolinjen:

echo Y|del C:\Folder

Skærmen vil vise en anmodning om at bekræfte sletningen af ​​alle filer i mappen mappe, men med et positivt svar (Y). Alle filer i mappen mappe vil blive slettet.
Vær forsigtig med denne kommando.

Sådan deaktiveres kommandoer, der vises, når du udfører en batchfil

Når du udfører en batch-fil, vises ud over resultaterne af kommandoen også selve kommandoerne. Du kan bruge @-symbolet til at undertrykke kommandoudgang.
For at undgå at udskrive én kommando på skærmen, kan du sætte et @-tegn i begyndelsen af ​​kommandoen.

Denne kommando viser kommandoen echo Testing, og på næste linje - resultatet af dens drift, ordet Testing.

Denne kommando vil kun vise resultatet af kommandoen, dvs. ordet Test. Selve kommandoen udsendes ikke.
Hvis du ikke behøver at vise kommandoer på skærmen under hele filens udførelse, så er det nemmere at skrive følgende kommando som den første linje i batchfilen:

Denne kommando deaktiverer kommandooutput til skærmen i hele batchfilens varighed. For at forhindre selve kommandoen i at blive udskrevet, begynder den med @-symbolet.

Sådan kører du en anden fra en bat-fil

Nogle gange, mens du udfører en batch-fil, bliver det nødvendigt at køre en anden batch-fil. Desuden skal udførelsen af ​​hovedbatchfilen i nogle tilfælde suspenderes, mens hjælpefilen udføres, og i andre tilfælde skal hjælpefilen køre parallelt med hovedfilen.
Lad os for eksempel oprette to bat-filer. En der hedder 1.bat og indeholder kun én kommando

Den anden hedder 2.bat og indeholder også en kommando

Lad os nu køre 1.bat-filen Et vindue åbnes, hvor du bliver bedt om at trykke på en vilkårlig tast for at fortsætte, hvorefter vinduet lukkes. Ved at kalde én batch-fil til en anden ved hjælp af call-kommandoen stopper udførelsen af ​​batch-filen, indtil batch-filen kaldet af call-kommandoen fuldfører eksekveringen.

I et andet tilfælde skal du starte enten et program eller en anden batch-fil fra en bat-fil uden at afbryde udførelsen af ​​den primære batch-fil. Dette skal ofte gøres, for eksempel ved at tvangsåbne loggen for en batchfil, der er planlagt til natten, så brugeren om morgenen kan kontrollere rigtigheden af ​​dens udførelse. For at gøre dette, brug startkommandoen Lad os rette linjen i fil 1.bat til

og kør 1.bat-filen Nu er der åbnet et vindue, hvor du skal trykke på en vilkårlig knap for at fortsætte, og vinduet i hovedbatchfilen (1.bat) er lukket.
For at kalde en anden fra én batchfil uden at stoppe den første batchfil, skal du bruge startkommandoen.
Start- og opkaldskommandoerne beskrevet ovenfor kan ikke kun bruges til at starte andre batchfiler, men også til at starte alle programmer eller åbne filer.
For eksempel vil kommandoen start log.txt i brødteksten af ​​en batchfil åbne log.txt-filen i Notesblok uden at stoppe batchfilen.

Sådan sender du en besked fra en bat-fil

Når en batch-fil udføres på en af ​​maskinerne på netværket, er det praktisk at informere administratoren om, at dens eksekvering er afsluttet ved hjælp af en besked sendt til administratorens maskine. Du kan gøre dette ved at inkludere kommandoen i batchfilen

net send navn Meddelelsestekst

Hvor navn er navnet på den maskine eller bruger, som beskeden er adresseret til, og beskedtekst er beskedens tekst. Efter at have kørt denne kommando, vil en besked blive sendt til brugernavn.
Bemærk venligst, at når du bruger kyrillisk i teksten i en meddelelse, skal teksten skrives i MS-DOS-kodning (866 kodetabel). Ellers vil beskeden ankomme i form af ulæselige tegn. Du kan skrive tekst i DOS-kodning ved hjælp af en hvilken som helst teksteditor, der understøtter denne kodning. Dette kunne for eksempel være FAR. Åbn en batch-fil til redigering i FAR (F4), og tryk på F8-knappen. Den øverste linje af editoren skal angive DOS-kodningen, og nederst, ved værktøjstip om genvejstasterne, skal F8-tasten have inskriptionen Win, hvilket indikerer, at den aktuelle kodning er DOS, og for at skifte til den Win-kodning, du har brug for for at trykke på F8.

Sådan automatiseres filsletning efter type

For at rydde din disk for midlertidige filer, kan du bruge kommandoen

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

Hvor
/f - sletter alle filer, selvom de har den skrivebeskyttede attribut sat
/s - sletter filer fra alle undermapper
/q - deaktiverer anmodningen om at bekræfte filsletningen
C: er det drev, hvor filer vil blive fundet og slettet. Du kan ikke angive hele disken, men en mappe, for eksempel C:\WinNT
*.tmp - type filer, der vil blive slettet

Vær forsigtig med /q-switchen og de filtyper, du sletter. Kommandoen sletter uden at spørge om tilladelse, og hvis den forkerte filtype er angivet, kan den slette unødvendige.

Sådan ændres en computers IP-adresse fra en batch-fil

IP-adressen kan ændres ved hjælp af netsh-kommandoen.
For at ændre IP-adressen korrekt skal du først finde ud af den aktuelle konfiguration. Dette kan gøres på kommandolinjen ved hjælp af kommandoen

netsh interface ip vis adresse

Resultatet af denne kommando er at vise den aktuelle konfiguration af netværksgrænsefladen. Vi er interesserede i navnet på grænsefladen. Lad os sige, at det hedder FASTNET.
Lad os antage, at du skal ændre IP-adressen til 192.168.1.42, netværksadresseringen er statisk, uden brug af DHCP, gatewayen er 192.168.1.1, masken er 255.255.255.0. I dette tilfælde skal kommandoen, der skal udføres fra batch-filen vil se sådan ud:

netsh interface ip sæt adresse navn = "FASTNET" statisk 192.168.1.42 255.255.255.0 192.169.1.1 1

Efter at have udført denne kommando, ændres FASTNET-grænsefladens IP-adresse til 192.168.1.42.
Netsh-kommandoen giver omfattende muligheder for at administrere netværksindstillinger fra kommandolinjen. For anden funktionalitet, se hjælp til at bruge netsh /?

Sådan finder du ud af computernavnet fra en bat-fil

For at finde ud af computernavnet, når du udfører en bat-fil (for at bruge denne værdi i fremtiden), brug kommandoen

Denne kommando returnerer navnet på den computer, den kører på.

Sådan omdøbes filer med maske fra en batch-fil

Nogle gange bliver det nødvendigt at omdøbe alle filerne i en mappe ved hjælp af en skabelon fra en batch-fil. Dette kan gøres ved at bruge følgende kommando i bat-filen:

for /f "tokens=*" %%a in ("dir /b PATH\*.*") skal du ren PATH\%%a Præfiks%%a

I denne linje skal du erstatte PATH\ med stien til de filer, der vil blive omdøbt, og præfikset med de tegn, der vil blive tilføjet til filnavnet, når du omdøber.
Læg ikke batchfilen i mappen, hvor omdøbningen sker, ellers vil den også blive omdøbt. Hvis der er undermapper i mappen, hvor filerne er omdøbt, så vil der også blive tilføjet et præfiks til navnet på undermappen, dvs. undermapper vil blive omdøbt som filer.
Hvis du angiver en specifik maske for de filtyper, der skal omdøbes, f.eks. *.txt, og ikke *.* som i eksemplet, vil kun filer af de angivne typer blive omdøbt. Andre filer og mapper vil ikke blive omdøbt.

Anden mulighed:
sæt PATH=C:\test
for %%I i (*.txt) gør ren "%thePATH%\%%~nxI" "%%~nI.dat"
Sådan bruger du procentsymbolet i en batchfil

For at bruge procentsymbolet (%) i en batchfil, skal du skrive det to gange. For eksempel
ekko 50 %%
Denne kommando i bat-filen vil vise 50%. Hvis du bruger kommandoen echo 50%, vil kun tallet 50 blive vist på skærmen.
Tag denne funktion i betragtning, når du bruger %-symbolet, når du skriver batchfiler.

Sådan eksporteres registreringsdatabasen fra en batchfil

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

Denne kommando, når du udfører en batch-fil, vil dumpe HKEY_CURRENT_USER\Environment-grenen i filen C:\environment.reg Når du skal gendanne parameterværdierne i HKEY_CURRENT_USER\Environment, vil det være nok at køre environment.reg fil. Denne kommando kan bruges til at lave en daglig backup af software og systemindstillinger, der er gemt i registreringsdatabasen.
Glem ikke, at hvis der er et mellemrum i stien, hvor outputfilen skal gemmes, eller i navnet på registreringsdatabasen, skal de være omgivet af anførselstegn.

Sådan importeres registreringsvariableværdier fra en batchfil

Hvis der er behov for at importere tidligere gemte eller nye variabelværdier til registreringsdatabasen fra en batchfil, kan dette gøres ved hjælp af kommandoen

regedit.exe -s C:\environment.reg

Denne kommando importerer data fra filen environment.reg til registreringsdatabasen uden at bede om bekræftelse ved at bruge -s switchen.

Sådan omgår du datokontrol fra en bat-fil

Noget software kontrollerer den aktuelle systemdato ved opstart. Hvis datoen er større end det, der blev indstillet af udvikleren, starter programmet ikke. For eksempel mener en udvikler, at en version af et program kan fungere i en måned, og så skal brugeren installere en opdateret version af programmet. På den ene side er dette en bekymring for brugeren, som vil have den seneste version af programmet til sin rådighed med manglerne elimineret i forhold til tidligere versioner. På den anden side tvinger producenten brugeren til at downloade en ny version, selvom brugeren er helt tilfreds med den version af programmet, han har installeret. Dette problem kan nemt løses ved hjælp af følgende batch-fil, som vil køre programmet, vente på, at det er færdigt og returnere datoen til den, der var før programmet blev lanceret.

sæt tempdate=%dato:~-10%
dato 01-01-04
notepad.exe
dato %tempdate%

I dette eksempel gemmes den aktuelle systemdato først i en variabel, derefter (i anden linje) sættes systemdatoen til 1. januar 2004, og derefter kaldes der et program, der kontrollerer systemdatoen. I dette eksempel er det Notesblok. Så længe Notesblok er åben, venter batchfilen uden at fuldføre eller indstille systemdatoen tilbage. Når Notesblok er lukket, vil batchfilen fortsætte med at udføre og indstille systemdatoen til den værdi, der er gemt i tempdate-variablen, dvs. til den, der var før kørsel af batchfilen.

Glem ikke, at hvis stien til filen, der kører programmet, indeholder mellemrum, så skal den (stien) være omgivet af anførselstegn. Hvis stien indeholder kyrillisk, skal du, når du skriver en batch-fil, bruge en teksteditor, der understøtter DOS-kodning (for eksempel FAR). Ellers, når du kører batchfilen, vil der blive vist en meddelelse om, at "den angivne fil ikke er en intern eller ekstern kommando...".

Hvis et program først tjekker den aktuelle systemdato, når det starter og ikke gør dette igen under drift, så kan batchfilen modificeres ved at tilføje en startsætning før navnet på programmets eksekverbare fil, dvs. vores eksempel vil se sådan ud:

sæt tempdate=%dato:~-10%
dato 01-01-04
start notepad.exe
dato %tempdate%

I dette tilfælde vil batchfilen ændre systemdatoen, starte programmet og, uden at vente på, at det er færdigt, returnere datoen til den, der var før programmet blev lanceret.

Sådan venter du på, at en bestemt fil vises i en bat-fil

Nogle gange er det nødvendigt at udføre en handling, når en bestemt fil vises i en mappe. For at organisere en kontrol for udseendet af en fil i en mappe, kan du bruge følgende batchfil

:prøve
hvis der findes c:\1.txt skal du gå
sove 10
skal til test
:gå
notesblok

En sådan batch-fil vil med 10-sekunders intervaller kontrollere tilstedeværelsen af ​​fil 1.txt i roden af ​​C-drevet, og når fil 1.txt vises, udføres handlingen angivet efter go-etiketten, dvs. dette eksempel vil starte Notesblok.
Søvnværktøjet distribueres frit som en del af ressourcesættet. Du kan downloade den her.
Hvis 1.txt-filen er stor og bliver kopieret fra et sted, kan det ske, at batchfilen vil tjekke for sin tilstedeværelse, mens filen endnu ikke er blevet kopieret eller er optaget af et andet program. I dette tilfælde vil forsøg på at udføre nogle handlinger med 1.txt-filen resultere i en fejl. For at forhindre dette i at ske, kan batchfilen ændres som følger

:prøve
hvis der findes c:\1.txt skal du gå
sove 10
skal til test
:gå
omdøb c:\1.txt 1.txt
hvis ikke fejlniveau 0 skal gå
del c:\1.txt

Når 1.txt-filen ikke er blevet fuldstændigt kopieret til drev C, eller er optaget af et andet program, vil et forsøg på at omdøbe den forårsage en fejl, og cyklussen vil blive gentaget, indtil filen er helt kopieret eller frigivet. Efter omdøb c:\1.txt 1.txt-kommandoen er udført uden fejl (dvs. filen er gratis), kan du udføre enhver handling med den. I det sidste eksempel er det at fjerne det.

Sådan tilføjer du kommentarer til en bat-fil

Når du skriver en stor batch-fil, er det meget nyttigt at tilføje kommentarer til dens hovedblokke. Dette vil gøre det nemt at forstå, hvad disse blokke gør over tid.

Mange tekniske forfattere har behov for at automatisere filbehandling fra tid til anden. Nogle gange taler vi om engangsbehandling af et stort antal filer, nogle gange taler vi om systematisk at udføre de samme handlinger, for eksempel ved brug af DocBook- eller DITA-teknologier). Behandling af hver fil med en separat manuel kommando tager ikke kun tid, men fører også til vanskelige at identificere fejl, der opstår på grund af operatørens naturlige uopmærksomhed.

I MS-DOS-operativsystemet og i alle operativsystemer i Microsoft Windows-familien er den enkleste måde at automatisere behandlingen af ​​filer (og mapper) på såkaldte batch-filer. Lad os sige med det samme, at batchfiler ikke er det eneste middel til at automatisere brugerens arbejde, selv blandt de indbyggede. I operativsystemer i Microsoft Windows-familien, fra version 98, er der også en Windows Script(ing) Host. Derudover er der ingen, der forbyder os at bruge et fortolket sprog til disse formål, f.eks. Perl, Python eller Ruby. De anførte værktøjer kræver dog, selvom de er kraftfulde, programmeringsfærdigheder, dvs. komponer og, vigtigere, fejlretning af programmer, i det mindste på et godt amatørniveau. Brug af batchfiler er tilgængelig for alle uden særlig uddannelse; opmærksomhed og sund fornuft er nok.

Vigtig note. En komplet opslagsbog eller endda en velskrevet lærebog om MS-DOS-kommandoer og udvikling af batchfiler ville skulle beskrive de mange nuancer, der er forbundet med brugen af ​​forskellige parametre, de særlige forhold ved driften af ​​batchfiler i forskellige versioner af Microsoft Vinduer osv. og så videre. Denne artikel hævder ikke at være komplet, især:

  • vi vil ikke beskrive forskellige måder at opnå det samme resultat på;
  • Vi vil ikke beskrive alle de nævnte kommandoers muligheder og anvendelser.

Nu er vores opgave at hjælpe dem, der er helt eller næsten ikke bekendt med dette værktøj, med at begynde at mestre batchfiler. Du kan derefter læse om alle detaljerne i virksomhedens dokumentation eller opslagsværker.

Kommando processor

Mange operativsystemer, inklusive dem, der er udviklet af Microsoft, inkluderer en kommandoprocessor. Dette er navnet på et program, der initierer udførelsen af ​​forskellige handlinger som svar på kommandoer indtastet af brugeren fra tastaturet. Dybest set består disse handlinger i at starte de nødvendige programmer med visse parametre. Men ikke kun; Vi vil se senere, at nogle kommandoer udføres direkte af kommandoprocessoren. Dybest set er disse kommandoer, der tjener til at kontrollere konteksten og rækkefølgen af ​​kommandoudførelse. Vi vil dog ikke tænke for dybt over kommandoernes natur, i det mindste ikke medmindre vi er nødt til det. Endnu vigtigere er det, at ethvert program, der er teknisk muligt at køre fra kommandolinjen, betragtes af kommandoprocessoren som en kommando. Den skelner ikke mellem de oprindelige kommandoer, der oprindeligt var indbygget i operativsystemet, og programmer, der blev installeret oven på det.

Sådan starter du kommandoprocessoren:

  1. Klik på knappen Start. Hovedmenuen vil blive vist på skærmen.
  2. Vælg Kør fra hovedmenuen. En dialogboks vises på skærmen Starter programmet.
  3. Indtast strengen i feltet Åbn cmd.
  4. Klik på knappen Okay. Et kommandoprocessorvindue vises på skærmen.

Kommandolinje og kommandoer

Kommandoprocessorvinduet i sin oprindelige form ser dystert ud, og det er ikke særlig bekvemt for de fleste at arbejde med det. Det er meget nemmere at bruge Norton Commander-stil filhåndtering. De giver både værktøjer til hurtigt at navigere i filsystemet og timing for indtastning af kommandoer.

For at indtaste kommandoen:

  1. Skriv kommandoteksten på kommandolinjen.
  2. Tryk på tasten Gå ind.

Kommandoprocessoren og styresystemets kommandoer er beskrevet i driftsdokumentationen for sidstnævnte. Denne dokumentation er delvist indeholdt i selve operativsystemet. Brug kommandoen for at få adgang til det Hjælp. Denne kommando viser en liste over tilgængelige kommandoer. For at få en beskrivelse af en specifik kommando, brug kommandoen som en parameter Hjælp hendes navn skal angives. Kommandolinjen vist i følgende liste viser en beskrivelse af kommandoen til.

Hjælp til

Hvis du forsøgte at indtaste kommandoen Hjælp, har du sikkert bemærket, at resultatet af dets arbejde (det såkaldte output) ikke passer på én skærm. Det samme problem opstår med kommandobeskrivelsesteksten til. Den gode nyhed er, at output kan omdirigeres til en fil. Kommandolinjen vist i den følgende liste genererer filen commands.txt, der indeholder en liste over alle MS-DOS-kommandoer.

Hjælp > commands.txt

For at generere en fil med en beskrivelse af kommandoen til, skal du give følgende kommando (du kan lave outputfilnavnet til hvad som helst).

Hjælp til > for.txt

I alt er der lidt mindre end 80 kommandoer i moderne Microsoft-operativsystemer, og det er umuligt at beskrive dem i én artikel. Her kan vi kun nævne nogle få kommandoer, der er nyttige til at automatisere filbehandling og vise, hvordan man bruger dem. Disse kommandoer vil blive brugt i yderligere eksempler. Du kan altid afklare detaljerne ved kommando Hjælp eller i mappen.

kopi— kopiering af en eller flere filer;

del— sletning af en eller flere filer;

bevæge sig— flytning af en eller flere filer eller mapper;

omdøbe(forkortet ren) - omdøb en eller flere filer eller mapper;

xkopi— kopiering af underkatalogtræet;

mkdir(forkortet md) — oprettelse af en mappe;

rmdir(forkortet rd) — sletning af en mappe.

En af de generelle regler for MS-DOS kommandosyntaks er, at når du angiver parametre, angives kilden først, og resultatet angives først. For eksempel hvis vi vil flytte en fil øl.txt fra kataloget boks til kataloget bord, skal vi indtaste kommandoen givet i den følgende liste.

Flyt box\beer.txt tabel

Først hvad skal man flytte, så hvor skal man flytte.

Hvis vi vil omdøbe filen lena.txt at arkivere natasha.txt, så skal kommandoen skrives som vist nedenfor.

Ren lena.txt natasha.txt

Først, hvad skal man omdøbe, så hvad man skal omdøbe.

Nuværende bibliotek. Absolutte og relative veje

Når du arbejder med filkommandoer, bliver konceptet med den aktuelle mappe ekstremt vigtigt. Pointen er, at når vi angiver en fil som en kommandoparameter, bruger vi altid en af ​​to mulige måder at pege på dem: enten en absolut sti eller en relativ sti. I den fulde sti angiver vi for eksempel alt, der starter med drevet (eller netværksnavnet på computeren). d:\misha\box\beer.txt. Uanset hvilken mappe der tilfældigvis er aktuel, når kommandoen indtastes, vil den fulde sti svare til den samme fil. For en relativ sti tjener den aktuelle mappe som udgangspunkt. Det enkleste tilfælde af en relativ sti er et filnavn. I forbindelse med kommandoudførelse betyder det en fil med det navn, der er placeret i den aktuelle mappe.

For at skrive en relativ sti til den aktuelle mappe er der en betinget indgang . (prik). For at registrere den relative sti til den mappe, der indeholder den aktuelle mappe, er der en betinget notation .. (to prikker). Kommandoen vist i følgende liste kopierer alle filer fra den aktuelle mappe til mappen nabo, der ligger ved siden af.

Kopi *.* .\nabo

Batch filer

Indtil nu, når vi gav eksempler, antog vi, at vi indtastede kommandoer manuelt hver gang. Når du behandler et stort antal filer eller systematisk udfører de samme kommandoer, bliver dette besværligt. Derfor giver kommandoprocessoren mulighed for at udføre kommandofiler. En batchfil er en tekstfil, hvori kommandoer (eller mindst én kommando) er skrevet. Et eksempel på en batchfil er vist i den følgende liste. Prøv at gætte, hvad denne batchfil gør.

Help copy > copy.help help move > move.help md msdos-help move *.help msdos-help

Hvis formålet med denne fil forbliver et mysterium for dig, så prøv at oprette og udføre den. Det er sædvanligt at give kommandofiler udvidelsen flagermus. Sådan genkendes filer af denne type af kommandoprocessoren. Denne fil kan f.eks. make-help.bat.

Sådan kører du batchfilen:

  1. Indtast hans navn som en kommando. Herefter vil batchfilen blive udført.

I en batch-fil fylder hver kommando en linje. Mere præcist er der en måde at placere en kommando på flere på hinanden følgende linjer; for at gøre dette skal du umiddelbart før hvert linjeskift sætte "cap"-symbolet ^ . (Hver cap skal være det sidste tegn på sin linje; der må ikke være mellemrum eller tabulatorer efter det.) Et eksempel på en sådan kommando er vist i den følgende liste.

Hvis der findes disser.txt ^ kopier disser.txt ^ d:\videnskab\papers\drafts\sources

Men for enkelhedens skyld, for ikke at tage forbehold hver gang, vil vi antage, at det på en måde er én lang "logisk" linje.

Når en batch-fil udføres, scanner kommandoprocessoren den fra top til bund fra første linje til sidste og udfører kommandoerne i den rækkefølge, den støder på dem. Det udfører dem generelt, som om vi indtastede hver af dem manuelt. Generelt fordi nogle kommandoer opfører sig lidt anderledes, når de indtastes manuelt, og når de udføres fra en batch-fil.

Hvis vi ser fremad, så lad os sige, at rækkefølgen af ​​kommandoudførelse om nødvendigt kan ændres ved hjælp af kontrolkommandoer (hvad der kan forårsage et sådant behov er et separat spørgsmål).

Forveksle ikke den aktuelle mappe med den mappe, hvori batchfilen, der skal startes, er placeret. Lad os antage, at den aktuelle mappe er arbejde, den indeholder en mappe værktøjer, og værktøjsmappen gemmer batchfiler. Du kører en af ​​dem med kommandoen tools\collect-images.bat. Så "fra synspunktet" af denne kommandofil vil den aktuelle mappe stadig være det arbejde, men ikke værktøjer.

Kommenter batchfilen og dens output. ekko og rem kommandoer

En batchfil er i bund og grund et program skrevet i operativsystemets kommandoprocessorsprog. Programmets tekst bør være forsynet med kommentarer, så du, når du vender tilbage til det nogen tid senere, ikke smerteligt behøver at huske, hvorfor dette program er nødvendigt, og hvordan det fungerer.

MS-DOS-kommandosystemet giver en kommando til at oprette kommentarer: rem. Dette er en dummy-kommando, der ikke involverer at udføre nogen handlinger, men giver dig mulighed for at skrive vilkårlig tekst på linjen efter dit navn. Desuden opfatter kommandoprocessoren det ikke som en syntaksfejl. Et eksempel på formatering af en kommandofil med kommentarer er vist i den følgende liste.

Rem ************************************************** **** rem Generering af hjælpefiler ved hjælp af kopierings- og flytkommandoer rem *********************************** * ****************** rem Opret hjælpefiler help copy > copy.help help move > move.help rem Opret en mappe til lagring af hjælpefiler md msdos-help rem Flyt hjælpefiler til den forberedte mappe flytte *.help msdos-help

Læg mærke til de tomme linjer, der deler batchfilen op i "afsnit". Dette enkle trick giver dig mulighed for at gøre din batch-fil mere læsbar.

Når du udfører ovenstående batchfil, vil alle kommandoer blive vist på skærmen, efterhånden som de udføres, hvilket ikke altid er praktisk. Kommandoudstedelse kan deaktiveres ved hjælp af kommandoen @ekko slukket. "hund"-symbolet foran kommandoen ekko Det betyder, at selve denne kommando skal udføres i "lydløs" tilstand. Vi kan lige så godt lade være med at bruge kommandolinjen ekko af, men placer en "hund" foran hver kommando.

I mange tilfælde vil du have en batch-fil til at vise bestemte meddelelser på skærmen (eller i en fil). I nogle tilfælde kan disse være fejlmeddelelser, i andre informationsmeddelelser, der forklarer brugeren af ​​batchfilen, hvad der sker i øjeblikket, når vi opretter en anden nyttig fil med batchfilen. Den samme ekkokommando bruges til at vise meddelelser. Teksten i den besked, der skal vises, sendes til den som en parameter. Listen over den forbedrede batchfil er givet nedenfor.

@echo off rem ********************************************** ******** ******* rem Generering af hjælpefiler ved hjælp af kopierings- og flytkommandoerne rem ************************ ********* ******************** @echo Generering af hjælpefiler. Bare et sekund... rem Opret hjælpefilerne hjælp kopi > copy.help help move > move.help rem Opret en mappe til at gemme hjælpefilerne md msdos-help rem Flyt hjælpefilerne til den forberedte mappe flyt *.help msdos -hjælp ekko Færdig!

Overførsel af parametre til en kommandofil

Lad os sige, at vi vil oprette en batchfil, der først genererer hjælp til at beskrive en brugerspecificeret kommando og derefter indlæser den i Notesblok til visning. Tricket er på en eller anden måde at fortælle det, næste gang vi kører batchfilen, hvilken kommando vi er interesseret i denne gang.

For at løse dette problem er der tilvejebragt en parameterbehandlingsmekanisme. Det fungerer ganske enkelt. Hvis brugeren, når du kører en batchfil, har angivet flere parametre, angiver vi i teksten til batchfilen den første af dem med posten %1 , anden post %2 , tredje indgang %3 etc. Vi bruger disse notationer i teksten i kommandofilen på nogenlunde samme måde, som vi bruger pronominer i naturlig tale.

Teksten til kommandofilen, der løser problemet, vises i den følgende liste. Vær opmærksom på kommandoen Hjælp. Den første parameter i kommandofilen sendes til den som dens parameter.

@echo off rem Vi opretter en fil med en beskrivelse af kommandoen, rem hvis navn sendes af parameteren help %1 > help.tmp rem Vi indlæser beskrivelsesfilen i Notepad editoren notesblok help.tmp

Lad os antage, at vi giver denne batch-fil navnet show-help.bat. For at indlæse en kommandobeskrivelse i en notesblok, f.eks. dir, skal vi indtaste kommandoen som følger.

Show-help.bat dir

Den følgende kommandofil opretter en mappe med navnet angivet i den første parameter og skriver en fil ind i den, der indeholder teksten, der beskriver kommandoen angivet i den anden parameter.

Rem Et eksempel på en kommandofil med to parametre rem Opret en mappe med navnet angivet af den første parameter md %1 rem Opret en fil i den med en beskrivelse af kommandoen rem specificeret af den anden parameter help %2 > %1\ %2.hjælp

Hvad sker der, hvis brugeren angiver fire parametre i stedet for to, når denne batchfil køres? Det er okay, de vil ikke forstyrre noget, de vil bare ikke blive brugt. Hvad sker der, hvis brugeren kun angiver den første parameter? Den anden parameter vil være tom. Effekten vil være denne: batch-filen vil blive udført, men som i stedet for optagelsen %2 der er ingenting. Hjælp-kommandoen vil generere en liste over alle kommandoer og placere den i en fil med et tomt navn og filtypenavnet .help. Hvis brugeren kører denne fil uden at angive nogen parametre, så når kommandoprocessoren forsøger at udføre kommandoen md(husk, dette er til at oprette en mappe), vi får en syntaksfejl, fordi md-kommandoen skal have en parameter.

Brug af parametre skaber således store muligheder, men kan komplicere sagerne betydeligt. For at batchfilen altid skal fungere korrekt, er det nødvendigt at kontrollere rigtigheden af ​​brugerens angivne parametre og på en eller anden måde reagere på ufuldstændige eller forkerte inputdata. Du kan selvfølgelig ikke gøre dette, men en forkert fungerende batchfil kan give problemer, især hvis den involverer sletning eller overskrivning af data.

Variabler. sæt kommando

En variabel er en navngivet værdi. I programmeringslærebøger sammenlignes en variabel normalt med en konvolut med et navn skrevet på. Du kan lægge noget i konvolutten, for eksempel et vist beløb - det er værdien. Som med konvolutten kan værdien af ​​variablen ændres.

For at erklære en variabel og samtidig tildele en værdi til den, skal du bruge kommandoen sæt. Et eksempel på denne kommando er vist i den følgende liste.

Rem Compiler af hjælpefiler i CHM-format set help_compiler=c:\HTML Help Workshop\hcc.exe

For at udtrække værdien af ​​en variabel placeres dens navn mellem to procenttegn, som vist nedenfor.

Rem Compiler af hjælpefiler i CHM-format set help_compiler=c:\HTML Help Workshop\hcc.exe rem Projekthjælpefil af "Warehouse"-modulet sæt store_hpj=help\sources\store\store.hpj rem Projekthjælpefil af " Sales" modul " set sales_hpj=help\sources\sales\sales.hpj rem Kompiler hjælpefiler %help_compiler% %store_hpj% %help_compiler% %sales_hpj%

Følgende liste viser, hvorfor variabler er nyttige.

For det første giver de dig mulighed for at bruge et kort fragment, der er synonymt med det inde i en batch-fil i stedet for et langt fragment (for eksempel stien til hjælpefilens compiler). Det er i hvert fald praktisk.

For det andet giver de dig mulighed for at undgå gentagelser i teksten i kommandofilen af ​​fragmenter, der kan ændre sig i fremtiden. Forestil dig, at vi geninstallerede Microsoft HTML Workshop til en anden mappe. Hvis en variabel bruges i en batch-fil til at registrere stien til den, vil det være nok kun at rette én linje i batch-filen, nemlig den, hvor værdien af ​​variablen er tildelt help_compiler. Hvis vi skrev stien til compileren, hver gang den skulle kaldes, ville vi efter at have ændret stien være nødt til at rette hver sådan linje. I ovenstående eksempel er der to af dem, men i et rigtigt projekt kan der lige så nemt være fem eller femten af ​​dem, afhængigt af antallet af hjælpefiler, vi ønsker at kompilere. Problemet er ikke, at det er svært at manuelt rette hver linje (der er trods alt ingen, der har annulleret kommandoerne "kopier" og "indsæt", men at dette i høj grad øger sandsynligheden for en utilsigtet fejl.

Batchfilparametre er også variable, men de adskiller sig fra almindelige variabler ved, at deres værdier indstilles, når batchfilen startes. Når vi i fremtiden taler om variabler, især om at arbejde med deres værdier, vil vi også mene kommandofilparametre, i det mindste i mangel af eksplicitte forbehold herom.

Når du skriver batch-filer, bruges følgende teknik ofte: flere variable værdier er angivet side om side (eller afbrudt med nogle symboler eller linjer), for at opnå en ny meningsfuld værdi. Et eksempel er vist i den følgende liste.

Rem Sti til hjælpefilens kompilator sæt help_compiler="c:\Program Files\HTML Help Workshop\hhc.exe" rem Sti til den mappe, hvori hjælpefilprojekterne er placeret, sæt project_path=e:\work\projects\help- projects rem Vi kalder compileren for at behandle et specifikt projekt, rem hvis navn er sendt i den første parameter %help_compiler% %project_path%\%1.hpj

Kontrol af forhold og valg af muligheder. if og goto kommandoer

If-kommandoen giver dig mulighed for at vælge grupper af kommandoer i en batchfil, der udføres eller ikke udføres afhængigt af visse forhold. Hvad er det for?

Tilstandskontrol er næsten et nødvendigt trin, når du opretter batchfiler, der bruger parametre. Før arbejdet påbegyndes, skal batchfilen generelt sikre sig, at det korrekte sæt parametre sendes til den. Ellers er der stor risiko for, at det bliver udført forkert eller ineffektivt, og brugeren vil kun undre sig over, hvad problemet er. Desuden, hvis en batch-fil sletter, flytter eller overskriver data, kan den endda forårsage skade, hvis parametrene er forkerte.

Følgende liste viser hjælpefilens kompileringskommandofil, som du allerede er bekendt med. En kontrol for ikke-tomhed af den første parameter er blevet tilføjet til begyndelsen af ​​kommandofilen. Bemærk venligst denne syntaksfunktion: sammenligningsoperationen bruger et dobbelt lighedstegn. Hvis den første parameter ikke er tom, udføres goto-kommandoen, som "kaster" skallen til den angivne etiket. I dette tilfælde er navnet på denne etiket kompileret. Bemærk, at hvor en etiket vises, er dens navn foran et kolon, men i goto-kommandoen er det ikke det. Hvis den første parameter er tom, flytter skallen til næste linje, hvilket giver en fejlmeddelelse. Og så til den næste, som overfører den til slutningen af ​​filen til en etiket med navnet Afslut.

@echo off rem Vi tjekker om parameteren er angivet hvis ikke "%1"=="" skal kompilere rem Hvis parameteren er tom, udsender vi en fejlmeddelelse echo Projektnavnet på rem hjælpefilen er ikke angivet og gå til slutningen af ​​rem-kommandofilen til finish goto label finish rem Dette er en etiket ved navn compile:compile rem Nedenfor er kompileringskommandoerne rem Sti til hjælpefilen compiler sæt help_compiler="c:\Program Files\HTML Help Workshop\hhc .exe" rem Sti til den mappe, hvor hjælpeprojekterne er placeret filer set project_path=e:\work\projects\help-projects rem Kald compileren til at behandle et specifikt projekt, rem hvis navn sendes i den første parameter %help_compiler% %project_path%\%1.hpj rem Dette er en etiket med navnet finish:finish

Lad os se det i øjnene, den foreslåede metode til at kontrollere en parameter er ikke den mest succesfulde.

For det første, hvis brugeren fejlagtigt angiver navnet på en ikke-eksisterende fil som en parameter, vil batchfilen være tilfreds med dette og forsøge at kompilere. En bedre måde er at kontrollere, om en sådan fil faktisk eksisterer. Til dette formål giver kommandosproget MS-DOS et specielt ord eksisterer. Derfor ville det være bedre at skrive: hvis der findes %1.hpj skal du kompilere.

For det andet aktiv brug af kommandoen gå til(det såkaldte ubetingede spring) og etiketter forvirrer koden meget. Teknisk set er de ikke dårlige, men fejlretning og vedligeholdelse af en batchfil skrevet i denne stil er ret ubelejligt. Derfor har programmører længe betragtet ubetinget spring som en uønsket teknik. Nedenfor er vist en mere korrekt, set ud fra programmeringsstilen, struktureret version, som bruger konstruktionen hvis ellers. Det fungerer sådan her: hvis betingelsen er sand, kommandoerne i parentes efter hvis, og hvis falsk, så i parentes efter andet.

@echo off rem Tjek om parameteren er indstillet hvis den ikke eksisterer %1.hpj (rem Hvis parameteren er tom, viser vi en fejlmeddelelse echo Dette hjælpefilprojekt findes ikke.) else (rem Nedenfor er kompileringskommandoerne rem Path til hjælpefilens kompilator sæt help_compiler="c:\Program Files\HTML Help Workshop\hhc.exe" rem Sti til den mappe, hvori hjælpefilprojekterne er placeret sæt project_path=e:\work\projects\help-projects rem Kald kompilatoren for at behandle et specifikt projekt, hvis navn er sendt i den første parameter %help_compiler% %project_path%\%1.hpj)

Vær opmærksom på fordybningen fra venstre kant. De er valgfrie, men gør teksten i batchfilen mere læsbar.

Lad os give endnu et eksempel på at arbejde med checks. Den følgende batch-fil opretter en mappe kaldet hjælpe-filer(antag, at uploade kompilerede hjælpefiler til det). Desuden, hvis en mappe med samme navn allerede eksisterer (og den sandsynligvis indeholder gamle hjælpefiler, som du ikke ønsker at miste: hvad nu hvis de nye viser sig at være værre?), tildeler batchfilen bak-udvidelsen til den . Men hvis mappen help-filer.bak allerede eksisterede, så sletter batchfilen den (vi antager, at en sikkerhedskopi er nok for os).

Hvis der findes help-files.bak rd help-files.bak hvis der findes hjælpe-filer ren hjælpe-filer help-files.bak md hjælpe-filer

Massefilbehandling. for kommando

For-kommandoen giver dig mulighed for at organisere udførelsen af ​​gentagne handlinger af samme type. Du kan bruge den til at vise tallene fra et til ti, som vist i den følgende liste.

For /l %%i i (1,1,10) skal du ekko %%i

Variabel jeg kaldet en loop-tæller. På grund af kommandoens unikke syntaks til, skal navnet på loop-tælleren bestå af et bogstav. Desuden, hvis vi skriver en batch-fil, så skal vi sætte et dobbelt procenttegn foran navnet på loop-tælleren, men hvis vi bare skriver en kommando på kommandolinjen, så en enkelt.

Logikken i denne kommando er som følger. Efter ordet i cyklustællerens ændringsområde er angivet. I denne version af kommandoen er dette en trippel af tal: tællerens begyndelsesværdi, tælletrinnet, tællerens grænseværdi. Når en kommando udføres, vil skallen først tildele variablen jeg betyder 1 , og derefter ved hvert trin i løkken vil den øge den med 1 indtil det overstiger 10 . Det er klart, at der vil være ti sådanne trin. Hvis vi angav et tal som tælletrin 2 , så ville løkken blive udført fem gange. Ved hvert trin i løkken udføres løkkens brødtekst skrevet efter ordet gør. I eksemplet ovenfor er dette ekkokommandoen, som viser den aktuelle værdi af sløjfetælleren.

Du kan sikkert tænke på en situation, hvor noget som dette faktisk er påkrævet, men normalt kommandoen til bruges til at iterere og behandle filer. Det skal siges, at i ret simple tilfælde udføres bulk filbehandling ved hjælp af jokertegn. Hvis vi ønsker at erstatte alle filer i den aktuelle mappe med udvidelsen .htm.html, indtaster vi kommandoen ren *.htm *.html. Men hvis det samme ikke skal gøres i én mappe, men i et mappetræ, så kan du ikke undvære kommandoen for. Den følgende batchfil udfører denne handling for alle htm-filer i webstedsunderbiblioteket i den aktuelle mappe. Mere præcist, i hele mappetræet, der er inde internet side.

For /r website %%i in (*.htm) skal du ren %%i %%~ni.html

Nøgle /r angiver behovet for at krydse biblioteket internet side og alt dets indre. Hvis du ikke angiver det (men så har du ikke lov til at angive en mappe), så vil kun filer i den aktuelle mappe blive behandlet. Udvalget af loop-tællerværdier i denne kommandovariant er sættet af alle filer med udvidelsen .htm, placeret inde i en mappe (mere præcist, et træ) internet side. En mærkelig indgang ved første øjekast ~ni betyder, at fra værdien af ​​variablen jeg Du behøver kun at vælge filnavnet. MS-DOS-kommandosproget giver flere sådanne modifikatorer, for eksempel skrivning ~xi angiver filtypenavnet. Alle modifikatorer er beskrevet i kommandohjælpen til.

Brødteksten i en løkke kan bestå af flere kommandoer omsluttet i parentes.

@echo off for /r website %%i in (*.htm) do (rem Udskriv filnavnet echo %%i rem Omdøb filen ren %%i %%~ni.html)

Overførsel af kontrol til en anden batchfil. kalde kommando

Det er muligt at kalde en anden batchfil fra en batchfil. Kommandoen til dette er opkald. Fantastisk, variablerne specificeret i den kaldende batchfil er "synlige" for den kaldte. Og omvendt, efter at den kaldte fil er færdig med sit arbejde og returnerer kontrollen til den, der ringer, vil sidstnævnte "se" de variabler, der efterlades til den af ​​den kaldte "arv". Dette giver batchfiludvikleren mulighed for at gøre noget som dette: Hvis flere kommandofiler skal bruge de samme værdier, for eksempel stier til nogle filer, kan de placeres i en separat kommandofil, som vil spille rollen som en konfigurationsfil. Hver fungerende kommandofil vil begynde med et kald til konfigurationsfilen. Fordelen er, at når du ændrer stier, skal du kun foretage ændringer i én konfigurationsfil, og ikke mange arbejdere.

"Konfiguration" batchfil config.bat.

Rem Sti til hjælpefilens kompilator sæt help_compiler="c:\Program Files\HTML Help Workshop\hhc.exe" rem Sti til den mappe, hvori hjælpefilprojekterne er placeret, sæt project_path=e:\work\projects\help- projekter

"Working" batchfil.

@echo off rem Opsæt variabler kald config.bat rem Tjek om parameteren er indstillet hvis den ikke eksisterer %1.hpj (rem Hvis parameteren er tom, viser vi en fejlmeddelelse echo Dette hjælpefilprojekt findes ikke.) else ( rem Nedenfor er kompileringskommandoerne rem. Vi kalder compileren for at behandle et specifikt projekt, rem hvis navn sendes i den første parameter %help_compiler% %project_path%\%1.hpj)