Komentojonotehtävät - Mallivastauksia - Demo1

Seuraavassa on esitetty muutamia mallivastauksia vaikeimpiin komentojonotehtäviin. Vastaus ei ole ainut oikea vaihtoehto, joten tekemäsi komentojono saattaa olla oikea, vaikka se eroaa mallivastauksesta.

Komentojen putkitus ja uudelleen suuntaus

Teht 2

DIR | MORE

Vastaava DOS-komento olisi

DIR /P

Komentojen erona on erilainen tuloste listauksen jatkamiseksi ja more-komennolla voidaan edetä rivi kerrallaan painamalla enter-näppäintä

Tehtävä 3

DIR> DIR.TXT

Tehtävä 5

DIR | SORT> DIR.TXT

Tehtävä 6

DIR | SORT /R>> DIR.TXT

Komentojonojen perusteet

Tentävä 2

ECHO Mukavaa päivää!

Komentorivien tulostus saadaan pois päältä lisäämällä seuraava komento komentojonon alkuun:

@ECHO OFF

Tentävä 3

ECHO Mukavaa päivää %1!

Tentävä 4

MKDIR temp

Tentävä 5

MKDIR temp
DIR temp

Tentävä 6

MKDIR  temp
COPY joku.bat temp
DIR temp

Tehtävä 7

MKDIR %1
COPY joku.bat %1
DIR %1

Tehtävä 8

MKDIR %1
COPY %2 %1
DIR %1

Tehtävä 9

@ECHO OFF
ECHO Tehdään hakemiston %1
MKDIR %1
ECHO Kopioidaan tiedosto(t) %2 hakemistoon %1
COPY %2 %1
DIR %1

Tehtävä 10


@ECHO OFF
IF EXIST %1 GOTO kopioi
ECHO Hakemisto %1 ei ollut olemassa, joten se tehdään!
MKDIR %1 
:kopioi
ECHO Kopioidaan tiedosto(t) %2 hakemistoon %1
COPY %2 %1
DIR %1

Tehtävä 11

@ECHO OFF
IF EXIST %1 GOTO kopioi
ECHO Tehdään hakemisto %1! Paina jotakin näppäintä jatkaaksesi...
ECHO Voit keskeyttää komentojonon suorittamisen CTRL-C-näppäinkomennolla
PAUSE> NUL
MKDIR %1 
:kopioi
ECHO Kopioidaan tiedosto(t) %2 hakemistoon %1
COPY %2 %1
DIR %1

Tehtävä 12

@ECHO OFF
REM Testataan annettiinko ensimmäistä parametria 
IF "%1"=="" GOTO param
REM Testataan onko hakemisto jo olemassa
IF EXIST %1 GOTO kopioi

ECHO Tehdään hakemisto %1! Paina jotakin näppäintä jatkaaksesi...
ECHO Voit keskeyttää komentojonon suorittamisen CTRL-C-näppäinkomennolla
PAUSE> NUL
MKDIR %1 

:kopioi
REM Testataan annettiinko toinen parametri
IF "%2"=="" GOTO kaikki
ECHO Kopioidaan tiedosto(t) %2 hakemistoon %1
COPY %2 %1
DIR %1
GOTO loppu

:kaikki 
ECHO Kopioidaan kaikki oletushakemiston tiedostot hakemistoon %1
COPY *.* %1
DIR %1
GOTO loppu

:param 
ECHO Et antanut hakemiston nimeä!

:loppu

Lisätehtävät

Tehtävä 1

Seuraava ratkaisu ei varmasti ole paras mahdollinen, koska esimerkiksi kopioitaessa rekursiivisesti hakemistoa, jonne uusi hakemisto tehdään, saadaan aikaa ikuinen silmukka. XCOPY-komennon käyttö mahdollistaisi huomattavasti yksinkertaisemman komentojonon käytön, koska XCOPY-komento osaa luoda hakemiston tarvittaessa. Jos käytetään tehokkaampia komentoja, niin kannattaa varmistaa, että komentojono toimii halutulla tavalla kaikissa tilanteissa.

@ECHO OFF
REM Testataan annettiinko ensimmäistä parametria 
IF "%1"=="" GOTO param
REM Testataan onko hakemisto jo olemassa
IF EXIST %1 GOTO kopioi

ECHO Tehdään hakemisto %1! Paina jotakin näppäintä jatkaaksesi...
ECHO Voit keskeyttää komentojonon suorittamisen CTRL-C-näppäinkomennolla
PAUSE> NUL
MKDIR %1 

:kopioi
REM Testataan annettiinko toinen parametri
IF "%2"=="" GOTO kaikki
ECHO Kopioidaan tiedosto(t) tai hakemisto rekursiivisesti %2 hakemistoon %1

REM 
XCOPY /E %2 %1

REM poistetaan hakemistolistaus, koska sillä ei tässä kohtaa ole merkitystä. 
REM Haluttaessa hakemistolistaus voitaisiin antaa rekursiivisesti.
REM DIR %1

GOTO loppu

:kaikki 
REM Jos ei saatu toista parametria, niin kopioidaan kaikki oletushakemiston tiedostot
ECHO Kopioidaan kaikki oletushakemiston tiedostot hakemistoon %1
COPY *.* %1
DIR %1 
GOTO loppu

:param 
ECHO Et antanut hakemiston nimeä!

Tehtävä 2

@ECHO OFF

REM Testataan oliko ensimmäistä parametriä
IF "%1"=="" GOTO para

REM Testataan oliko toista parametriä
IF "%2"=="" GOTO para

REM Alustetaan kohde-niminen muuttuja
set kohde=%1

REM Testataan hekemiston olemassaoloa
IF EXIST %1 GOTO kopioi
ECHO Tehdään hakemisto %1
MKDIR %1

:kopioi
IF "%2"=="" GOTO loppu

REM Kopioidaan tiedosto kohde-muuttujan ilmaisemaan hakemistoon
COPY %2 %kohde%
SHIFT
GOTO kopioi

:para
ECHO Et antanut riittävästi parametrejä komentojonolle!
ECHO Kutsu komentojonoa muodossa:
ECHO kopioi hakemistonimi tiedosto1 [tiedosto2 tiedosto3 .. tiedostoN]

:loppu
Kurssimateriaalien käyttäminen kaupallisiin tarkoituksiin tai opetusmateriaalina ilman lupaa on ehdottomasti kielletty!
http://appro.mit.jyu.fi/laitteistot/demot/demo1/vastaukset.html
© Tommi Lahtonen (tommi.j.lahtonen@jyu.fi)<URL: http://www.iki.fi/hazor/>
2003-05-16 17:10:19