سؤال ملف نقل robocopy وليس مجلد


أحاول استخدام robocopy لنقل ملف واحد من موقع إلى آخر ولكن robocopy يبدو أنني أفكر في تحديد مجلد دائمًا. هنا مثال:

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

ولكني حصلت على هذا الخطأ بدلاً من ذلك:

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

(لاحظ ال \ في نهاية transfer_this.txt)

ولكن إذا تعاملت معها مثل مجلد كامل:

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

كان يعمل ولكن لدي لنقل كل شيء في المجلد.

كيف يمكنني نقل ملف واحد فقط مع robocopy؟


90
2017-08-11 22:29


الأصل


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


الأجوبة:


نرى: Robocopy /?

الاستعمال: وجهة المصدر ROBOCOPY [ملف [ملف] ...] [خيارات]

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

116
2017-08-11 22:37



fwiw ، على الأقل في win2003: يبدو أن نقلا عن مسارات الدليل لجعلها تشوبكوب. - samsmith
Samsmith لقد رأيتها زوبعة عندما يكون لديك \ قبل الاقتباس الختامي (أي: ROBOCOPY "c: \ folder1 \" c: \ folder2 لن يعمل الملف لكن: ROBOCOPY "c: \ folder1" c: \ folder2 ملف لا ، أتوقع أنه شيء هروب النص - Mike Goatly
MikeGoatly نقطة ممتازة. Robocopy لا يحب trailing \. يريد منك تسمية الدلائل كـ "أسماء" ولا ترغب في الإيحاء بأي طريقة أنه يقبل أي شيء آخر غير دليل. - samsmith


وفقا لمقال Wikipedia على Robocopy:

ناسخة المجلد ، وليس ناسخة الملف

تختلف بنية Robocopy بشكل ملحوظ عن أوامر النسخ القياسية ، لأنها تقبل أسماء المجلدات فقط كوسيطة المصدر والوجهة. أسماء الملفات وأحرف البطاقة البرية (مثل *.*) ليست حجج المصدر أو الوجهة الصحيحة. قد يتم تحديد الملفات أو استبعادها باستخدام وسيطة تصفية filespec الاختيارية. يمكن أن يشير Filespecs فقط إلى أسماء الملفات المتعلقة بالمجلدات المحددة بالفعل للنسخ. أسماء المسارات المؤهلة بالكامل غير مدعومة.

على سبيل المثال ، من أجل نسخ الملف foo.txt من الدليل c:\bar إلى c:\baz، يمكن للمرء استخدام بناء الجملة التالي:

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


16
2017-08-30 23:47



شيء واحد لاحظت. إذا كان لدى C: \ bar أي مجلدات فيه وتمت إضافة الخيار / e. سيعيد إنشاء جميع المجلدات بدون ملفات فيها. أعتقد أن foo.txt يعمل مثل عامل تصفية ولم يتمكن من العثور على أي ملفات في هذه المجلدات ومجلداتك الفارغة. ولهذا السبب يتم إنشاء المجلدات الفارغة. - Donny V


جرِّب إدخال مسافة قبل الوجهة ، على النحو التالي:

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

لاحظ الفضاء  بعد "مجلد" الوجهة z:.


1
2018-06-29 20:37



هذا لم يعمل بالنسبة لي ، واضطررت إلى اتباع تعليمات @ KPWINC وترك اسم الملف للخروج من مسار المصدر. - influent
هذا هو إجابة القزم؟ حاول ولا يعمل (ولا يبدو أنه قد عملت). - Pacerier


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


-4
2018-06-04 10:31



اسم الملف المصدر الوجهة Robocopy - Dale
الأمر بدون تفسير ليس إجابة مفيدة. - kasperd