Začátečnické kopírování na Příkazovém řádku není věc, která je rychlejší nebo pohodlnější než v Total Commanderu. Rozhodně ale stojí za to se to naučit. Kopírovat bez myši, jen pomocí příkazů z klávesnice. Kopírovat budeme soubory i složky. Současně s tím si řekneme něco o takových divných znacích, které se někdy v názvech souborů vyskytují, jako např „*“.
xcopy
Předpokládám, že všichni z vás již někdy kopírovali. Ze začátku většinou v Tento počítač nebo Dokumenty, později snad v Průzkumníkovi. Předposlední metou všech kopírovačů je pak nějaký souborový manažer, např. Total Commander, kde se zvyšuje rychlost a efektivita několikanásobně oproti kopírování pomocí myši v Tento počítač. Poslední metou je pak kopírování v DOSu, případně různých programovacích jazycích, kdy si sami přesně určujete, co a kam chcete nakopírovat a kopíruje celé struktury adresářů na jeden Enter.
Cvičební script na tvorbu pomocných souborů
Dnes se budeme učit kopírovat v DOSu se vším, co s tím souvisí. Tedy hlavně zástupné symboly. Připravil jsem proto pro vás script napsaný v Pythonu, který vám v aktuálním adresáři, vytvoří 20 souborů s příponou txt, 20 s jpg, 20 s c, 20 s py a 20 s mp3. Celkem tedy 100 souborů. Proto bude třeba, abyste si nainstalovali Python. Není nic jednoduššího – klasická instalace OK – OK – Finish. Stahujte zde:
Následující kód si nakopírujte do souboru, například v PSPadu, soubor uložte pod názvem například soubory.py na vhodné místo - tam, kde budete chtít mít 100 cvičných souborů. Pak soubor stačí spustit - dvakrát na něj kliknout v Průzkumníkovi nebo na příkazové řádce napsat python soubory.py nebo dokonce i jen soubory.py. Při použití příkazové řádky ovšem musíte samozřejmě stát ve správné složce.
"""Tento skript je vytvoren v Pythonu a slouzi jako pomocny
k teto lekci. V aktualnim adresari vam vyrobi desitky
souboru s ruznymi priponami."""
import random
typy=[".txt",".jpg",".c",".py",".mp3"]
pocet=20
def jmeno():
vyber=list("abcdefghijklmnopqrstuvwxyz0123456789")
delka=random.randint(3,8)
nazev=random.sample(vyber, delka)
return "".join(nazev)
def vytvorSoubory(typ):
for i in range(pocet):
nazev= jmeno()+typ
print nazev
soubor=file(nazev,"w")
soubor.write("Toto je zkusebni soubor " + typ)
soubor.close()
# ----- hlavni program ---------------------------------
for typ in typy:
vytvorSoubory(typ)
raw_input("\nStiskni Enter na ukonceni")
První xcopy
Pro kopírování v DOSu se používá příkaz copy nebo xcopy. xcopy je modernější verze, budeme tedy používat tuto. Pomocí xcopy /? získáte přehled všech možných parametrů, které xcopy přijímá. Nám však zatím bude stačit tato jednoduchá konstrukce:
xcopy odkud kam
To odkud i kam jsou cesty, buď absolutní nebo relativní. Jen připomenu, že pokud se v cestě náhodou objeví mezera, je nutno tuto cestu uzavřít do uvozovek.
- Odkud udává soubor nebo soubory, které se mají kopírovat.
- Kam udává, kam se mají soubory kopírovat.
Takže stojíme v adresáři, kde máme našich 100 souborů (někdo dokonce 101) a zkusíme kopírovat. Budeme kopírovat do složky c:\temp, tu doufám, že všichni máte. Pár příkladů, které si rozhodně vyzkoušejte:
del c:\temp\*.* # smažeme vše, co je v této složce, ať máme čisto
xcopy *.* c:\temp # nakopíruj vše do složky c:\temp
xcopy *.mp3 c:\temp # nakopíruj do složky pouze soubory s příponou mp3
xcopy a*.* c:\temp # kopíruj všechny soubory, které začínají na písmeno 'a'
xcopy m*.py c:\temp # kopíruj všechny soubory, které začínají na 'm' a mají příponu py
Pokud provádíte kopírování několikrát za sebou, určitě na vás vyběhne hláška:
C:\zkouska>xcopy *.* c:\temp
Přepsat C:\temp\0wgt.jpg (Ano/Ne/Vše)?
Stačí zadat ‚A‘ nebo ‚a‘ nebo ‚V‘ či ‚v‘ a kopírování probíhá dál. Pokud nechcete přepsat, tak jen ‚N‘ nebo ‚n‘. Chcete-li úplně přerušit kopírování, abyste nemuseli pořád mačkat nnnnnnnnnnnnn, tak stačí CTRL+C (držet CTRL a ťuknout do ‚C‘).
Zástupné znaky
Snad jste všichni poznali, že „*“ v předchozí ukázce příkazů znamená „VŠE“. Tedy např. *.txt značí VŠECHNY (*) soubory s příponou txt (.txt). „*“ značí vše, tedy nezáleží, jestli jméno má 3 nebo 20 znaků, prostě vše až do tečky, kde již začíná přípona.
Existuje ještě jeden zástupný znak, který se však využívá málo, a to je „?“. „?“ značí právě JEDEN jakýkoliv znak. Ukázka příkazů:
# kopíruj soubory, které začínají na "a" a mají přesně 3 znaky s libovolnou příponou
xcopy a??.* c:\temp
# kopíruj soubory, které mají v názvu maximálně 3 znaky s libovolnou příponou
# První (a i druhý) ? může být totiž i "nic" (mezera), tudíž tomuto vzoru odpovídá i např. a.txt
xcopy ???.* c:\temp
# kopíruj všechny soubory, jejich přípona má maximálně 2 znaky
xcopy *.?? c:\temp
Druhé xcopy
Pomocí copy můžeme kopírovat nejen soubory, ale i celé složky. Vytvořte si tedy nějaké, nakopírujte si do nich nějaké soubory a zkuste následující. Já mám založeny adresáře hudba a python:
xcopy hudba c:\temp\hudba\ # kopíruj celý adresář hudba do temp (adresář hudba tam bude vytvořen)
xcopy hudba c:\temp # kopíruj vše, co je ve složce hudba, do c:\temp (adresář nebude vytvořen)
xcopy hudba c:\temp\hudba # DOS se nás zeptá, jestli chceme adresář vytvořit
Při tomto způsobu kopírování nedochází ke kopírování všech případných vnořených adresářů ve složce hudba. Jen soubory. Chceme-li nakopírovat úplně vše, všechny soubory i složky, které v „hudbě“ jsou, musíme použít přepínač /S:
xcopy /S hudba c:\temp\hudba\ # nebo taky
xcopy hudba c:\temp\hudba\ /S
Závěr
Tak na co jsem z této problematiky zapomněl, to nevím. Pokud to víte vy, dejte vědět. Rozhodně si vše vyzkoušejte, protože pouhým přečtením si zapamatujete málo, tedy pokud to máte jako já ;-) Jo a nezapomeňte na úkol.
Úkol
Tentokrát nechci vidět výsledky, které vám budou příkazy z úkolu vypisovat, protože by to byl velmi dlouhý seznam. Chci vidět jen ty příkazy. Nakopírujte do složky c:\temp z aktuálního adresáře následující soubory/složky
- všechny soubory
- všechny soubory s příponou jpg
- všechny soubory, které začínají na písmeno „x“
- všechny maximálně 4-místné soubory s libovolnou příponou
- všechny céčkovské soubory, které začínají na „h“
- celou složku (včetně podsložek) „filmy“