Jak po prostu skopiować folder do innego, zachowując strukturę?

0

Załóżmy, że mam następującą strukturę i bieżący katalog roboczy to root:

root
    - sub1
         file1.xml
         file2.xml
    - sub2
         file3.css
    - _target
         {is an empty folder}
    run.bat

Chcę użyć xcopy kopiować sub1 pod _target utrzymanie struktury. Rezultatem jest:

- _target
    - sub1
        file1.xml
        file2.xml

Jednak gdy próbuję dodać parametry (tzn. Dowolną kombinację /I, /S, /E ) do xcopy Zawsze kończę na tym:

- _target
    file1.xml
    file2.xml

Jakie są prawidłowe parametry do osiągnięcia powyższego ( sub1 w _target z jego zawartością)?

Próbowałem dodać \ na końcu folderów źródłowych i docelowych, aby naśladować uniks cp magiczne zachowanie, ale to też nie pomogło.

Proszę zauważyć, że szukam rozwiązania, które niepotrzebnie nie powiela nazwy folderu w argumentach ( to właśnie mam na myśli przez „po prostu” w tytule ), Wiem to xcopy sub1 _target\sub1 /I Prace!

Jak Ostatnia deska ratunku za robocopy odpowiedź może być akceptowalna, ale naprawdę wolałbym xcopy bez powielania parametru.

TWiStErRob
źródło
więc chcesz skopiować katalog z jego zawartością, a nie tylko jego zawartość. Nie wiem, move działa tak. move b a, przeniesie katalog b na a. Ale wiesz, że xcopy jest obejściem problemu md thedirectory następnie skopiuj zawartość swojego katalogu źródłowego do tego.
barlop
Wszystko bardzo dobrze, jeśli chcesz skopiować katalog gdzieś indziej o tej samej nazwie. Ale załóżmy, że chcesz skopiować zawartość katalogu do katalogu o innej nazwie. Fakt, że przy użyciu xcopy określasz katalog, którego zawartość chcesz skopiować, daje ci taką elastyczność. W wielu przypadkach może nie być dwukrotnie taka sama nazwa.
barlop
A jeśli myślisz, że ze względu na dwa razy taką samą nazwę, to jest wtedy zbyt wiele naciśnięć klawiszy, a wadą odziedziczoną po DOSie, cóż, nie jest tak, że filozofia Linuksa to minimalne naciśnięcia klawiszy, spróbuj wymienić tylko katalogi, a nie pliki, w Linuksie ... potrzebujesz polecenia znajdź, podczas gdy w CMD lub DOS po prostu dir /ad
barlop
Ponadto, jeśli katalog dest nie istnieje, to xcopy pyta cię, czy jest to plik czy katalog, więc łatwiej jest go po prostu „najpierw”. Co więcej, w przypadku DOS lub CMD, jeśli wykonasz DIR bla *, wtedy wiesz, co zrobi .. wyświetli listę wszystkich plików / katalogów rozpoczynających się od bla. Ale z linuxem, jeśli zrobisz ls blah * lub ls / etc / ssh *, jeśli nie znasz struktury katalogów przed wykonaniem polecenia, nie wiesz, czy dane wyjściowe będą plikami zaczynającymi się od bla, czy zawartością katalog zaczynający się od bla. Więc Linux ma pewne poważne niedociągnięcia IMO.
barlop
Najpierw tworzysz katalog, nie tylko dlatego, że nie musisz go wpisywać (możesz uniknąć ponownego wpisywania go przez skopiowanie / wklejenie, co jest bardzo szybkie, jeśli włączysz tryb quickedit w oknie cmd), ale również utworzysz katalog najpierw więc xcopy nie pyta, czy jest to F-Folder czy D-Directory. A kiedy utworzysz katalog przed xcopy, możesz ponownie użyć karty. Nie trzeba nawet kopiować / wklejać, nie mówiąc już o ponownym wpisywaniu długiej nazwy folderu.
barlop

Odpowiedzi:

0

Problem polega na tym, że / S i / E są ze sobą sprzeczne. Użyj / S (wszystkie, z wyjątkiem pustych folderów) lub użyj / E (wszystkie, w tym puste foldery).

Założę się, że chcesz użyć / E, więc twój xcopy będzie:

xcopy sub1 _target\sub1 /I /E
LPChip
źródło
Cytat z pytania: „ Szukam rozwiązania, które niepotrzebnie nie powiela nazwy folderu w argumentach [...] Wiem o tym xcopy sub1 _target\sub1 /I Prace! „… więc to, do czego przyczynisz się /E faktycznie działa, ponieważ dodałeś \sub1; dlatego tworzy podkatalog, którego chcę.
TWiStErRob
Również /I /S /E była jedną z wielu kombinacji, które próbowałem, wyjaśniłem to.
TWiStErRob