Dosyaları bir klasörden başka bir klasöre kopyalamak için toplu iş dosyası


235

Tüm kullanıcıların etkin verilerini bir sunucuda saklayacağı bir ağda depolama klasörüm var. Şimdi bu sunucu yer sorunu nedeniyle yenisiyle değiştirilecek, bu yüzden alt klasör dosyalarını eski sunucu depolama klasöründen yeni sunucu depolama klasörüne kopyalamam gerekiyor. Ben eski var:

\ Oldeserver \ storage \ data & files'dan \ New server \ storage \ data & files klasörüne.


3
Bir Windows ortamından bahsettiğinizi varsayıyorum?
Alan Plum


4
@ HugoM.Zuleta, .bat dosyalarının farkındayım. Ancak "toplu iş dosyası" mutlaka Windows ortamını garanti etmez. Terim Windows öncesi (.bat dosyaları gibi) kullanımı ve ben acemi bile * nix ortamlarda "kabuk komut dosyaları" anlamına gelen terimi kullandığını gördüm.
Alan Plum

1
@pluma Kabul ediyorum ve bunun nedeni çoğunlukla işletim sistemlerinin komut dosyası araçları tarafından yapılan toplu işlemlere atıfta bulunmasıdır.
Hugo M. Zuleta

Yanıtlar:


441

xcopy.exe kesinlikle burada senin arkadaşın. Windows'da yerleşiktir, bu yüzden maliyeti hiçbir şey değildir.

Sadece xcopy /s c:\source d:\target

Muhtemelen birkaç şeyi değiştirmek istersiniz; Ayrıca eklediğimiz seçeneklerden bazıları şunlardır:

  • /s/e - boş dizinlerin kopyalanması dahil, özyinelemeli kopya.
  • /v- kopyayı orijinal belgeye göre doğrulamak için bunu ekleyin. daha yavaş, ama paranoyak için.
  • /h - kopyalama sistemi ve gizli dosyalar.
  • /k- salt okunur öznitelikleri dosyalarla birlikte kopyalayın. aksi takdirde tüm dosyalar okuma-yazma olur.
  • /x- izinleri önemsiyorsanız, isteyebilirsiniz /oveya /x.
  • /y - mevcut dosyaların üzerine yazmadan önce sorma.
  • /z- kopyanın başarısız olabileceğini düşünüyorsanız ve yeniden başlatmak istiyorsanız bunu kullanın. Her dosyaya kopyalanırken bir işaretleyici yerleştirir, böylece xcopy komutunu kaldığı yerden almak için yeniden çalıştırabilirsiniz.

Xcopy'nin yarıda başarısız olabileceğini düşünüyorsanız (kesintili bir ağ bağlantısı üzerinden kopyalarken olduğu gibi) veya durdurmanız ve daha sonra devam etmek istiyorsanız, kullanabilirsiniz xcopy /s/z c:\source d:\target.

Bu yardımcı olur umarım.


2
@Iavinio Bir arşivi kopyalarken dosya veya dizin soruyor. Bunu bastırmanın bir yolu var mı?
Bitterblue

Merhaba @ mini-me - Bir dizinse, sondaki bir '/' karakteri belirtebildiğinizi ve bu mesajı görmeyeceğinizi buldum.
DaveDev

2
/i- Hedef yoksa ve birden fazla dosya kopyalanıyorsa, hedefin bir dizin olması gerektiğini varsayar.
lavinio

1
Dizinden tek bir dosya nasıl kopyalanır?
Charan Raju CR

10
"Dosya veya dizin" istemi almak için, böyle komutu ... echo f | xcopy /s /f srcfile destfile
wintondeshong

56

Verileri yedeklemek için en sevdiğim:

ROBOCOPY "C:\folder" "C:\new_folder" /mir

/ mir ayna içindir. Dosyaları taşımak için / mov komutunu da kullanabilirsiniz. Aynı klasörü yeniden oluşturur. Dosyaları gerektiği gibi silebilir / üzerine yazabilir. Benim için harika çalışıyor. Xcopy / copy'den daha hızlı. Windows'da da yerleşiktir.

Kaynak: http://technet.microsoft.com/en-us/library/cc733145.aspx


2
Bunu destekliyorum. Gerçekten hızlı. Xcopy'dan çok daha hızlı
Ike

Thumbs.db'yi buna benzer şekilde yinelemeli olarak kaldırmanın bir yolu var mı?
drooh

54

Açık olmak xcopy /s c:\source d:\targetgerekirse, kullandığınızda , c: \ kaynağının ve d: \ hedefin etrafına "" koyun, aksi halde hata alırsınız.

yani yolda boşluklar varsa, yani:

"C:\Some Folder\*.txt"

ancak aşağıdakilere sahipseniz gerekli değildir:

C:\SomeFolder\*.txt

1
Tırnak işaretleri hile yaptı;) teşekkürler ben de / Y varsa dosyayı değiştirmek için kullandım :) Örnek: copyxcopy / s "c: \ kaynak" "d: \ hedef" / Y "
Joel Carneiro

18

Windows'ta neredeyse tüm dosya kopyalama işlemleri için oldukça kapsamlı çözümler olan XCopy veya RoboCopy'ye göz atmak isteyebilirsiniz .


3
Xcopy dosya veya klasör kararlarını istediğinden RoboCopy XCopy'den daha iyi görünüyor. Ve geri çeviremem. Tam otomatik çalışabilmelidir ZORUNLU.
Bitterblue

@ mini-me Bu çok geç olduğunu biliyorum ama aynı ilgili anahtarı bulamıyorum. Kopyaladığım aynı adda boş bir dosya oluşturmaya ve daha sonra üzerine yazmaya başvurdum. Dosya zaten varsa, o zaman onun bir dosya veya dizin olup olmadığını sormak rahatsız etmez. (Otomatik dizin istiyorsanız, yola bir '/' ekleyebilirsiniz ve bunu yapar). Umarım gelecekteki insanlara yardımcı olur!
Tom C

2
@ Referans için, echo f | xcopy source destination /yotomatik yapacak. Tüm sorulara yanıt olarak bir "f" atar. Ayrıca üzerine yazma istekleri de geçecektir (f evet olarak alınır, sanırım).
ndm13

14

'Hedeften bir dosya adı veya dizin adı belirtin (F = dosya, D = dizin)?' xcopy istemi ile aşağıdakileri yapabilirsiniz ...

echo f | xcopy /f /y srcfile destfile

ya da sadece büyük alt yapıları / klasörleri kopyalayanlarımız için:

Birden fazla dosya kopyalanıyorsa, hedefi belirten / i kullanın.


(dosyalar için echo "f" veya dizinler için "D")
JinSnow

şimdi yapmaya çalışıyorum ve sadece çalışma değil - bir dosyayı başka bir dizine kopyalamaya çalışırken her zaman istemleri alırım. Etkili olursa Win 10'u kullanma echo f | xcopy / f / y "My.dll" "C: \ myFolder \ My.dll". Ben boşuna (ve sermaye F) diğer anahtarların bir kombinasyonu ile denedim
Prof

3

mutlak yol, göreceli yol kullanmayan bir dosyayı kopyalamak istiyorsanız:

yolda ters eğik çizgi yazmayı unutma VE eğik çizgi

misal :

    copy children-folder\file.something .\other-children-folder

PS: mutlak yol "toplu parametreler" olarak adlandırılan bu joker karakterler kullanılarak alınabilir

    @echo off
    echo %%~dp0 is "%~dp0"
    echo %%0 is "%0"
    echo %%~dpnx0 is "%~dpnx0"
    echo %%~f1 is "%~f1"
    echo %%~dp0%%~1 is "%~dp0%~1"

kopya için buradaki belgelere bakın: https://technet.microsoft.com/en-us/library/bb490886.aspx

ve ayrıca toplu parametre belgeleri için: https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true


Bence buna ters eğik çizgi denir.
Leon Bohmann

2
@echo off

rem The * at the end of the destination file is to avoid File/Directory Internal Question.

rem You can do this for each especific file. (Make sure you already have permissions to the path)
xcopy /Y "\\Oldeserver\storage\data\MyFile01.txt" "\\New server\storage\data\MyFile01.txt"*
pause

rem You can use "copy" instead of "xcopy "for this example.

0

Bak rsynctabanlı Windows aracı NasBackup . Rsync komutlarıyla tanışmanız bir bonus olacaktır.

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.