Soru robocopy transfer dosyası ve klasör değil


Kullanmaya çalışıyorum robocopy tek bir dosyayı bir konumdan diğerine aktarmak için robocopy her zaman bir klasör belirttiğimi düşünüyorum. İşte bir örnek:

robocopy "c:\transfer_this.txt" "z:\transferred.txt"

Ama bunun yerine şu hatayı alıyorum:

2009/08/11 15:21:57 ERROR 123 (0x0000007B) Accessing Source Directory c:\transfer_this.txt\

(not \ sonunda transfer_this.txt)

Ama eğer tüm bir klasör gibi davranırsam:

robocopy "c:\folder" "z:\folder"

Çalışıyor ama sonra her şeyi klasöre aktarmak zorundayım.

Yalnızca tek bir dosyayı nasıl aktarabilirim? robocopy?


90
2017-08-11 22:29


Menşei


def copyFile(fromLocation,toLocation,big=False): print("copy file from " + fromLocation + " to " + toLocation) if big: iFind=fromLocation.rfind('\\') fromLocation1 = fromLocation[: (iFind+1)] fileName=fromLocation[iFind+1 :] toLocation1 = toLocation[:(toLocation.rfind('\\')+1)] strcmd="robocopy "+fromLocation1+" "+toLocation1+" "+fileName print(strcmd) os.system(strcmd) else: shutil.copy2(fromLocation,toLocation) - Gank


Cevaplar:


Görmek: Robocopy /?

Kullanımı: ROBOCOPY kaynak hedefi [dosya [dosya] ...] [seçenekler]

robocopy c:\folder d:\folder transfer_this.txt

116
2017-08-11 22:37



fwiw, en azından win2003 üzerinde: İstenen dizin yolları hıçkırık yapmak gibi görünüyor. - samsmith
@samsmith Eğer kapanış fiyatından önce bir \ 'hiccup gördüm (yani: ROBOCOPY "c: \ folder1 \" c: \ folder2 dosyası çalışmaz ama: ROBOCOPY "c: \ folder1" c: \ folder2 dosya var, bu bir metin kaçan bir şey olmasını bekliyorum - Mike Goatly
@MikeGoatly Mükemmel nokta. Robocopy, takip etmekten hoşlanmıyor \. Dizinleri "adlar" olarak adlandırmanızı ve bir dizin dışında herhangi bir şeyi kabul etmesini ima etmek istemez. - samsmith


Robocopy hakkında Wikipedia makalesine göre:

Klasör fotokopi, dosya fotokopi değil

Robocopy sözdizimi, standart kopya komutlarından belirgin bir şekilde farklıdır, çünkü yalnızca klasör adlarını kaynak ve hedef bağımsız değişkenleri olarak kabul eder. Dosya adları ve vahşi kart karakterleri ( *.*) geçerli kaynak veya hedef argümanları değildir. İsteğe bağlı filespec filtreleme argümanı kullanılarak dosyalar seçilebilir veya hariç tutulabilir. Filespecs, sadece kopyalama için seçilen klasörlere göre dosya isimlerine başvurabilir. Tam nitelikli yol adları desteklenmez.

Örneğin, dosyayı kopyalamak için foo.txt dizinden c:\bar için c:\bazAşağıdaki sözdizimini kullanabilir:

robocopy c:\bar c:\baz foo.txt


16
2017-08-30 23:47



Fark ettiğim bir şey var. C: \ bar içinde herhangi bir klasör varsa ve seçenek / e eklendi. Tüm klasörleri içinde hiçbir dosya olmadan yeniden oluşturur. Foo.txt bir filtre gibi davrandığından ve bu klasörlerdeki dosyaları ve boş klasörleri saklayamadığından Bu yüzden boş klasörler oluşturulur. - Donny V


Hedeften önce bir boşluk eklemeyi deneyin:

robocopy "c:\transfer_this.txt" "z: \this.txt" 

alanı fark et  hedef "klasör" sonra z:.


1
2018-06-29 20:37



Bu benim için çalışmadı, @ KPWINC'in talimatlarını takip etmeliydim ve dosya adını kaynak yolundan çıkardım. - influent
Bu bir troll cevabı mı? Denedim ve çalışmıyor (işe yarayacak gibi gözükmüyor). - Pacerier


robocopy Q: \ F: \ Dopbox "Microsoft Office.zip" / MT: 128


-4
2018-06-04 10:31



Robocopy kaynak hedefi dosya adı - Dale
Açıklama olmadan bir komut yararlı bir cevap değildir. - kasperd