Я пытался сделать это, но это не работает
:: variables
/min
SET odrive=%odrive:~0,2%
set backupcmd=xcopy /s /c /d /e /h /i /r /y
echo off
for /r C:\ %f in (*.jpg) do @copy "%drive%\all\pics"
@echo off
cls
Существует ряд проблем с вашим командным файлом.
%
Вам необходимо использовать %%
в командном файле. %
для командной строки.
:: variables
/min
/min
- «/min» не распознается как внутренняя или внешняя команда, работающая программа или командный файл. Я не уверен, что вы пытаетесь сделать с этим.
odrive
SET odrive=%odrive:~0,2%
odrive
уже определен? Если нет, будет установлено ~0,2
. В любом случае он не используется снова.
backupcmd
set backupcmd=xcopy /s /c /d /e /h /i /r /y
Вы не используете backupcmd
for
echo off
for /r C:\ %f in (*.jpg) do @copy "%drive%\all\pics"
Это не допустимое использование for
. Вам нужно использовать %%f
не %f
.
copy
принимает как минимум два параметра, источник и место назначения.
%drive%
уже определен?
Попробуйте следующее for
команды:
for /r C:\ %%f in (*.jpg) do @copy %%f "%drive%\all\pics"
- Взять набор данных
- Сделать параметр FOR %% G равным некоторой части этих данных
- Выполните команду (необязательно, используя параметр как часть команды).
- Повторите для каждого элемента данных
Если вы используете команду FOR в командной строке, а не в пакетной программе, используйте только один знак процента:% G вместо %% G.
Источник для
Попробуйте команду ROBOCOPY с параметром /MIR. Он рекурсивно просматривает все папки и копирует только что обновленные / новые файлы. Исходная структура каталогов воссоздается на цели. Использование, например
robocopy /mir <source path> <target path>
Я всегда думаю, что чем меньше, тем лучше. Почему бы просто не попробовать следующее?
xcopy /c/d/e/f/h/r/y c:\*.jpg .
заметки: