Jak jsem psal včera - vydal jsem Calm Commander 1.0 a jedna z jeho novinek byla i kopírování adresářů a podadresářů a to do hloubky 11 podaddresářů. Uveřejnil jsem tuto novinku na FB stránce ZX Spectrum Next s tím, že si chvilku odpočinu, ale rozhořela se tam diskuze o tom, proč není Calm Commander dot command. Je to jednoduché - protože já ho jako dot command nikdy nechtěl - popravdě si myslím, že by to bylo kontraproduktivní. Calm Commander zabírá spousttu místa - LFN i 8.3 jména souborů/adresářůnačteného adresáře si drží v paměti, při kopírování si ukládá data do co největší části paměti, pluginy sami o sobě také něco sežraly (myslím tím paměť). Ale nějak se tam ve mne zrodila myšlinka udělat několik dot příkazů - kopírování, delete a dirinfo. A dnes bych Vám rád představil příkaz copy.
.copy zdroj cil .copy -s zdroj -d cil
Oba formáty jsou rovnocenné. Cesty s mezerami v názvu uzavřete do uvozovek.
-m — move (přesun): po úspěšném zkopírování smaže zdrojový soubor nebo adresář-y — yes (přepis): přepisuje existující cílové soubory; bez tohoto přepínače se existující soubory přeskočí-h — zobrazí nápověduKopírování jednoho souboru:
Soubor se čte do 8 kB pracovního bufferu na adrese $DC00 a zapisuje se na cíl po blocích.
Pokud cíl končí lomítkem nebo jde o existující adresář, jméno zdrojového souboru se přidá automaticky.
Jinak se cílová cesta použije jako výsledné jméno souboru.
Kopírování adresáře (rekurzivní):
Copying: nazev_adresare (X/celkem) a pro každý soubor soubor [XkB/CelkemkB].Přesun adresáře (-m):
Nejprve proběhne kompletní rekurzivní kopie, pak se celý zdrojový strom smaže (soubory přes F_UNLINK, adresáře přes F_RMDIR zdola nahoru).
Pro přesun jednoho souboru se nejdříve zkusí F_RENAME (rychlé přejmenování na stejném disku); teprve pokud selže, provede se kopie + smazání.
-y: existující cílový soubor se přeskočí a zobrazí se Skipping existing: jmeno.-y: cílový soubor se přepíše./ nebo \ → zdrojové jméno se přidá za lomítko.adresar/) se normalizuje na adresar.copy: destiny path not found.Cancelled.Během kopírování a mazání se CPU dočasně přepne na 28 MHz (NextReg $07 = 3). Po skončení – ať úspěšném, chybném, nebo zrušeném – se turbo vrátí na původní hodnotu.
$DC00–$FBFF$C000 (12 × 256 bajtů)$CC00 (12 × 256 bajtů)$2000 (standardní dot command).copy zaloha zaloha2
Zkopíruje soubor nebo adresář zaloha do zaloha2.
.copy -y "Calm Commander" "backup/"
Zkopíruje adresář Calm Commander (s mezerou v názvu) do backup/Calm Commander. Existující soubory přepíše.
.copy -s "muj adresar" -d "d:/moje zaloha"
Kopírování s cestami v uvozovkách je vhodné, když cesta obsahuje mezery.
.copy -m stary novy
Přesune adresář stary na novy (kopie + smazání zdroje).
copy: missing or bad arguments — chybí zdroj nebo cíl, nebo neznámý přepínačcopy: destiny path not found — nadřazený adresář cíle neexistujecopy: esxDOS error $XX stg $YY — interní chyba; XX je esxDOS chybový kód, YY je fáze (pro ladění)Skipping existing: jmeno — soubor na cíli existuje a nebyl zadán -yCancelled. — uživatel stiskl BREAKDone. — kopírování nebo přesun úspěšně dokončenKe stažení: shrek128.itch.io