» »

MS-DOS/cmd xcopy

MS-DOS/cmd xcopy

Grizzly ::

Pozdrav!

Zanima me, kako se v DOS-u kopira datoteko oz. imenik, ne da bi po vnosu ukaza moral povedati ali gre za file oz. directory? Rabim en ukaz (ni nujno da xcopy, lahko je kakšna alternativa), ki bi z isto sintakso kopiral tako datoteke, kot mape. Pišem paketno datoteko (BAT), ki bo skopirala vse navedene datoteke in mape (število je lahko zelo veliko), zato je nerodno za vsako potrjevat. Sintaksa pa mora biti za vse enaka, ker bi rad ukaz uporabil v zanki.

amigo_no1 ::

Spajky ::

Kopiranje vsega živega iz enega na drugi disk (ali razdelek) v čistem MS-DOS-u primer:

Type "xcopy c:\*.* d:\ /S /E /V /H /K /C /F /R /Y " ....
"Bluzim na forumu, torej sem !" (še živ ) ...

Zgodovina sprememb…

  • spremenilo: Spajky ()

NeMeTko ::

Če so vse datoteke v isti veji, potem xcopy /s.

Za bolj komplicirane variante, zlasti ko želiš še kaj drugega, kot samo kopirat pa preštudiraj ukaz FOR.

Medtem ko je xcopy preprost (saj je namenjen zgolj kopiranju), lahko for ukaz postane zelo kompleksen in kriptičen.
Če npr. želimo v vsaki mapi v imenski strukturi naresti nekakšen katalog datotek (z do_it.bat), tega lahko kličemo z ukazom for, ki bi lahko izgledal tako:

for /D /R %%d in (*) do (set wrk_dir=%%~d& set wrk_path=%%~pd& set wrk_name=%%~nd& do_it "%%~pd" "%%~nd" "%%~fd")


Zgornji primer v enem prehodu v vsaki mapi izvede 4 ukaze (3x set ukaz, 1x do_it.bat).

Brez obvladovanja ukaza for je izredno teško pod DOS-om izvajati kakšne bolj kompleksne postopke, zato ti toplo priporočam, da si ga pogledaš pobližje.

Grizzly ::

Kakorkoli uporabim ukaz XCOPY mi izpiše tole:

Does D:\Users\User\Test specify a file name
or directory name on the target
(F = file, D = directory)?


Jaz pa bi rad, da kopiranje poteka brez kakšnih vmesnih vnosov, saj je pri veliki količini datotek to zamudno dejanje. Če bi vpisal na primer XCOPY source target, bi moral sistem sam prepoznati ali target predstavlja mapo ali datoteko. Ko v Windowsih/Linuxih kopirate datoteke (copy-paste) tudi ne vpisujete ali boste kopirali mapo ali datoteko. Tako bi rad kopiral tudi v CMD.

Rabim samo 1 ukaz (+parametre), ki bo na določeni lokaciji ustvaril identično mapo (+podmape in datoteke oz. )datoteko kot jo kopiram.

NeMeTko ::

Očitno si za target dal ime mape, ki vsebuje piko v imenu npr. imenik.backup ?

Lahko napišeš kompletni xcopy ukaz, ki ga uporabljaš?

Grizzly ::

Kompletni ukaz je bil takle: xcopy nova_mapa test (nova_mapa = mapa, test = mapa, v katero bi kopiral - še ne obstaja).

V drugem primeru pa bil lahko bila nova_mapa tudi datoteka, seveda brez končnice. Ali pa kakor si napisal, lahko napišem mapa.txt, vendar to ne predstavlja tekstovne datoteke ampak mapo s končnico .txt
Prav zaradi tega bi rad ukaz, ki bi sam prepoznal tip datoteke oz. mape, če je seveda to mogoče, glede na to, kako so stvari potekale v starem DOS-u.

NeMeTko ::

Pri xcopy moraš uporabiti parameter /s, če hočeš, da bo tole nekako delovalo v tvojem smislu (nisi nič pogledal seznam parametrov in čemu kateri služi?).
Kot pa vidim, nisi uporabil nobenega parametra, zato tudi dobivaš dodatna vprašanja.

Tudi če bi že obstajala mapa z imenom 'test', xcopy nebi več spraševal, ali želiš kopirati v mapo ali datoteko.

Ne vem pa, kaj si mislil z 'prepoznal TIP datoteke oz. mape'.

Za DOS obstajajo samo datoteke (filename) in atributi. Če boš hotel čarati s 'tipi' datotek (predvidevam, da glede na končnico imena?), boš to moral sam v svoji batch datoteki definirati.

Koneckoncev tudi Windows nebi poznal 'tipa' datoteke, če nebi imel definiranih asociacij med končnicami imen datotek in programi, s katerimi te končnice odpiramo.

Verjetno nimaš opravka s prav hudo veliko različnimi 'tipi' datotek, tako da ne vidim razloga, zakaj nebi v .bat datoteko nanizal več zaporednih xcopy ukazov, npr. tako:

xcopy nova_mapa\*.txt txt_test /s
xcopy nova_mapa\*.doc doc_test /s
.
.

Zvezdica27 ::

xcopy vir cilj /e /h

probaj

zz

NeMeTko ::

Kaj ko bi malo pogledal pod parameter /I ?

XCOPY /?

  source       Specifies the file(s) to copy.
  destination  Specifies the location and/or name of new files.
  /A           Copies only files with the archive attribute set,
               doesn't change the attribute.
  /M           Copies only files with the archive attribute set,
               turns off the archive attribute.
  /D:m-d-y     Copies files changed on or after the specified date.
               If no date is given, copies only those files whose
               source time is newer than the destination time.
  /EXCLUDE:file1[+file2][+file3]...
               Specifies a list of files containing strings.  Each string
               should be in a separate line in the files.  When any of the
               strings match any part of the absolute path of the file to be
               copied, that file will be excluded from being copied.  For
               example, specifying a string like \obj\ or .obj will exclude
               all files underneath the directory obj or all files with the
               .obj extension respectively.
  /P           Prompts you before creating each destination file.
  /S           Copies directories and subdirectories except empty ones.
  /E           Copies directories and subdirectories, including empty ones.
               Same as /S /E. May be used to modify /T.
  /V           Verifies the size of each new file.
  /W           Prompts you to press a key before copying.
  /C           Continues copying even if errors occur.
  /I           If destination does not exist and copying more than one file,
               assumes that destination must be a directory.
  /Q           Does not display file names while copying.
  /F           Displays full source and destination file names while copying.
  /L           Displays files that would be copied.
  /G           Allows the copying of encrypted files to destination that does
               not support encryption.
  /H           Copies hidden and system files also.
  /R           Overwrites read-only files.
  /T           Creates directory structure, but does not copy files. Does not
               include empty directories or subdirectories. /T /E includes
               empty directories and subdirectories.
  /U           Copies only files that already exist in destination.
  /K           Copies attributes. Normal Xcopy will reset read-only attributes.
  /N           Copies using the generated short names.
  /O           Copies file ownership and ACL information.
  /X           Copies file audit settings (implies /O).
  /Y           Suppresses prompting to confirm you want to overwrite an
               existing destination file.
  /-Y          Causes prompting to confirm you want to overwrite an
               existing destination file.
  /Z           Copies networked files in restartable mode.
  /B           Copies the Symbolic Link itself versus the target of the link.
  /J           Copies using unbuffered I/O. Recommended for very large files.

The switch /Y may be preset in the COPYCMD environment variable.
This may be overridden with /-Y on the command line.

Zgodovina sprememb…

  • spremenil: NeMeTko ()

Grizzly ::

Tudi stikalo /I sem preveril in še par ostalih, vendar v vsakem primeru me vpraša ali je file ali directory. Sicer to ni za moje potrebe, pač nekomu programiram, ki verjetno še sam ne ve, kaj hoče. Če bi delal zase, bi rekel da uporabljam le osnovne tipe datotek, ker pa bo to počel nekdo, ki išče dlako v jajcu, tega žal ne morem reči. Saj veste: kdor išče, ta najde in če iščeš pomanjkljivost, jo boš zagotovo našel, ker nobena stvar ni tako popolna, da ne bi mogla biti boljša.
Zdaj sem iz pisanja paketne datoteke preklopil na konkretno programiranje s sistemskimi klici in zadeve napredujejo. Tako da to še dokončam, potem se pa tudi nimam več namena jeb** s pisanjem skript, programov itd. Hvala za pomoč, zaenkrat mislim, da bom zmogel, drugače se pa še slišimo. LP.

DeeJay ::

ti robocopy /? pride kej bolj prav?


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

skripta, ki kopira en folder v drugega

Oddelek: Programiranje
121030 (633) MrStein
»

batch fajl iz txt (strani: 1 2 )

Oddelek: Programiranje
658822 (7483) b3D_950
»

BAT kopiranje mape

Oddelek: Pomoč in nasveti
101488 (1356) StratOS
»

Gigabitni switch za domaco uporabo?

Oddelek: Kaj kupiti
211997 (1357) lopov
»

[Batch] xcopy ukaz

Oddelek: Programiranje
61478 (1290) Ethical

Več podobnih tem