1

Я пишу общую программу резервного копирования файлов. Он ищет на диске файлы, соответствующие набору типов, а затем записывает их в папку на рабочем столе. Я написал его с помощью xcopy в Windows XP, но, узнав, что xcopy устарел в пользу robocopy в Vista и более новых версиях, все еще желая поддерживать совместимость, я решил переключиться на неотрицательную copy .

Здесь начинаются проблемы. Я пытаюсь исправить процедуру копирования. Я думал, что у меня все разобрано, но это ничего не копирует. Мой вывод - ноль файлов, скопированных за каждую итерацию.

Исходный код с использованием xcopy:

for /r %%a in (*.bmp *.dds *.gif *.jpg *.jpeg *.png *.psd *.pspimage *.tga *.thm *.tif *.tiff) do (
   echo f | xcopy "%%a" "%HOMEDRIVE%%HOMEPATH%\Desktop\LDR\Images\Bitmap\%%~nxa" /q /y /g /c
)

Пересмотренный (неработающий) код с использованием copy:

for /r %%a in (*.bmp *.dds *.gif *.jpg *.jpeg *.png *.psd *.pspimage *.tga *.thm *.tif *.tiff) do (
   copy "%%a" "%HOMEDRIVE%%HOMEPATH%\Desktop\LDR\Images\Bitmap\%%~nxa" /d /y /z
)

Выход:

The system cannot find the path specified.
    0 files copied.

Я знаю, что, кажется, все используют xcopy или robocopy но кто-нибудь может помочь с copy?

Примечание. Я использую пакетный режим, чтобы он был очень легким и доступным из командной строки.

1 ответ1

0

Решение наконец найдено!

Очевидно, xcopy создает каталоги, если они не указаны. У меня не было уже выложенного пути к \LDR\Images\Bitmap . copy не знает, как создавать папки, поэтому мне придется генерировать их заранее, что немного раздражает, потому что с xcopy он не будет создавать папки, когда в них нет файлов для вставки. С copy я делаю папки, предполагая, что они будут заполнены.

Спасибо за помощь. ДЛЯ ЗАПИСИ: copy не создает несуществующие пути к файлам. xcopy делает!

ОБНОВЛЕНИЕ: мое окончательное решение. Работает как чемпион.

for /r %%a in (*.bmp *.dds *.gif *.jpg *.jpeg *.png *.psd *.pspimage *.tga *.thm *.tif *.tiff) do (
   if not exist "%HOMEDRIVE%%HOMEPATH%\Desktop\LDR\Images\Bitmap\" (md "%HOMEDRIVE%%HOMEPATH%\Desktop\LDR\Images\Bitmap\")
   copy "%%a" "%HOMEDRIVE%%HOMEPATH%\Desktop\LDR\Images\Bitmap\%%~nxa" /d /y /z
)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .