Bir klasörü yapıyı koruyarak başka birine nasıl kopyalayabilirim?


0

Diyelim ki aşağıdaki yapıya sahibim ve mevcut çalışma dizini root:

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

Ben kullanmak istiyorum xcopykopyalamak sub1altında _targetyapısı tutmak. Yani sonuç:

- _target
    - sub1
        file1.xml
        file2.xml

Ben parametreleri (yani herhangi bir kombinasyonunu eklemeye çalıştığınızda Ancak /I, /S, /Eiçin) xcopyI her zaman bu ile bitirmek:

- _target
    file1.xml
    file2.xml

Doğru parametreler (yukarıdaki birini elde etmek nelerdir sub1içinde _targetiçeriğiyle)?

\Unix'in cpsihir davranışını taklit etmek için hem kaynak hem de hedef klasörlerin sonuna eklemeyi denedim , ancak bu da işe yaramadı.

Lütfen gereksiz yere klasör adını gereksiz yere çoğaltmayan bir çözüm aradığımı unutmayın ( başlıkta "sadece" derken kastediyorum ), xcopy sub1 _target\sub1 /Iişe yaradığını biliyorum !

Bir itibariyle son çare bir robocopycevap kabul edilebilir, ama gerçekten tercih ediyorum xcopyparametre çoğaltma olmadan.


bu yüzden dizini sadece içeriğinden ziyade içeriğiyle kopyalamak istiyorsunuz. Bilmiyorum, moveböyle çalışıyor. ba hareket ettir, b dizinini a içine çeker. Ancak, xcopy'yu yeniden bilirsiniz, bir geçici çözüm, md thedirectorykaynak dizininizin içeriğini xcopy olarak yapmaktır .
barlop

Her şey çok iyi, aynı adı taşıyan başka bir yere dizini kopyalamak istiyorsanız. Ancak bir dizinin içeriğini başka bir ismin dizine kopyalamak istediğinizi varsayalım. Xcopy ile içeriğini kopyalamak istediğiniz dizini belirtmeniz gerçeği size bu esnekliği sağlar. Birçok durumda, iki kez aynı ad olmayabilir.
barlop

Ve aynı adın iki kez olduğu durumlar nedeniyle, o zaman çok fazla tuşa basmanın ve DOS'tan miras kalan bir eksikliğin olduğunu düşünürseniz, linux felsefesinin minimal tuş vuruşlarına benzememesi, sadece dosyalara değil dizinleri listelemeye çalışın, dir /ad
linux'da

Ayrıca, dest dizini yoksa, xcopy size bir dosya veya dizin olup olmadığını sorar, bu yüzden önceden sadece 'md' olması daha kolaydır. Ve ayrıca, DOS veya CMD ile, eğer DIR filanı yaparsanız * o zaman ne yapacağını bilirsiniz .. blah ile başlayan tüm dosyaları / dizinleri listeleyecektir. Fakat linux ile ls blah * veya ls / etc / ssh * yaparsanız, komutu yapmadan önce dizin yapısını bilmiyorsanız, çıktının blah ile başlayan dosyalar veya içeriğinin olup olmayacağını bilemezsiniz. fiil ile başlayan bir dizin. Yani Linux’un IMO’da bazı ciddi eksiklikleri var.
barlop

Önce dizini oluşturursunuz, yalnızca yazmak zorunda kalmazsınız (cmd penceresindeki quickedit modunu açarsanız çok hızlı olan kopyala / yapıştır komutuyla tekrar yazmaktan kaçınabilirsiniz), ancak dizini de yaparsınız. ilk önce xcopy, bunun bir F-Folder veya D-Directory olup olmadığını sormanızı istemez. Dizini xcopy'den önce yaptığınızda, sekmeyi tekrar kullanabilirsiniz. Kopyala / yapıştır bile gerekmez, uzun klasör adını tekrar yazsanız bile.
barlop

Yanıtlar:


0

Sorun şu / S ve / E birbirleriyle çelişiyor. / S (boş klasörler hariç tümü) kullanın veya / E (boş klasörler dahil tümü kullanın) kullanın.

İddiaya girerim / E'yi kullanmak istersin, böylece xcopy'nız şöyle olur:

xcopy sub1 _target\sub1 /I /E

Sorudan alıntı yaparak: " Gereksiz yere argümanlardaki klasör adını yinelemeyen bir çözüm arıyorum [...] İşe xcopy sub1 _target\sub1 /Iyaradığını biliyorum ! " ... bu yüzden /Easlında katkıda bulunduğunuz şeyin etkisi var çünkü eklendi \sub1; Bu yüzden istediğim subdir'i yaratıyor.
TWiStErRob

Ayrıca /I /S /Edenediğim birçok kombinasyondan sadece biriydi, açıklığa kavuşturdum.
TWiStErRob
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.