файл передачі файлів роботокопії, а не папки


99

Я намагаюся використовувати 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?


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)
Ганк

Відповіді:


129

Побачити: Robocopy /?

Використання: призначення джерела ROBOCOPY [файл [файл] ...] [параметри]

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

fwiw, принаймні, на win2003: Цитування шляхів до каталогу, здається, робить його іконою.
Самсміт

1
@samsmith Я бачив, що це гикавка, коли у вас є \ перед заключною цитатою (тобто: ROBOCOPY "c: \ folder1 \" c: \ folder2 файл не працюватиме, але: ROBOCOPY "c: \ folder1" c: \ folder2 Я очікую, що це текст, який втікає текст
Майк Козлі,

1
@MikeGoatly Відмінна точка. Робокопія НЕ любить трейлінг \. Він хоче, щоб ви назвали каталоги «іменами», і не хоче ні в якому разі означати, що він приймає що-небудь, крім каталогу.
Самсміт

19

Відповідно до статті Вікіпедії про роботокопію :

Копіювач папок, а не копіювач файлів

Синтаксис роботокопії помітно відрізняється від стандартних команд копіювання, оскільки він приймає лише імена папок як аргументи джерела та призначення. Імена файлів та символи*.* підкреслених кодів (наприклад ) не є дійсними аргументами джерела чи призначення. Файли можуть бути вибрані або виключені за допомогою необов'язкового аргументу filepec фільтрації. Файли файлів можуть посилатися лише на імена файлів відносно папок, вже вибраних для копіювання. Повністю кваліфіковані імена шляху не підтримуються.

Наприклад, для того, щоб скопіювати файл foo.txtіз каталогу c:\barв c:\baz, можна використати такий синтаксис:

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


Одне я помітив. Якщо в барі C: \ є будь-які папки, додано опцію / e. Він буде відтворити всі папки без файлів у них. Я думаю, оскільки foo.txt діє як фільтр і не міг знайти жодних файлів у цих папках та зберігати порожні папки. Ось чому створені порожні папки.
Донні V

1

Спробуйте вставити пробіл перед пунктом призначення, наприклад:

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

помітьте пробіл після "папки" призначення z:.


3
Це не спрацювало для мене, мені довелося дотримуватися вказівок @ KPWINC і залишити ім'я файлу поза вихідного контуру.
впливовий

3
Це троль відповідь? Пробував і не працює (і не здається, що він би працював).
Печер'є

-4

робокопія Q: \ F: \ Dopbox "Microsoft Office.zip" / MT: 128


Назва файлу джерела роботокопіювання
Дейл

6
Команда без пояснень не є корисною відповіддю.
kasperd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.