Как скопировать файлы с помощью Windows Batch?
-
06-07-2019 - |
Вопрос
У меня есть каталог с несколькими подкаталогами с файлами.
Как скопировать все файлы из подкаталогов в новое место?
Редактировать: Я не хочу копировать каталоги, только файлы...
Поскольку это все еще используется в XP, я выбрал следующее решение:
for /D %S IN ("src\*.*") DO @COPY "%S\" "dest\"
Спасибо!
Решение
Хорошо.Учитывая ваше изменение, в котором говорится, что вам не нужна структура каталогов, я думаю, вы захотите использовать что-то вроде этого:
for /F "usebackq" %s IN (`DIR /B /S /A-D SrcDir`) DO @(
XCOPY %s DestDir\%~nxs
)
Другие советы
Здесь должна помочь команда Xcopy.
XCOPY /E SrcDir\*.* DestDir\
Или, если вам не нужны никакие файлы в SrcDir, а только подкаталоги, вы можете использовать XCOPY в сочетании с командой FOR:
FOR /D %s IN (SrcDir\*) DO @XCOPY /E %s DestDir\%~ns\
robocopy "c:\source" "c:\destination" /E
Если я правильно вас понял, у вас большое дерево каталогов, и вы хотите, чтобы все файлы внутри него находились в одном каталоге.Если это правильно, то я могу сделать это в две строки:
dir /s /b "yourSourceDirectoryTreeHere" > filelist.txt
for /f %f in (filelist.txt) do @copy %f "yourDestinationDirHere"
В пакетном файле vs.командная строка изменится с %f на %%f
Если вы хотите сохранить ту же структуру папок на другом конце, это звучит так же просто, как XCOPY.
xcopy c:\old\*.* d: ew\/s
Используйте /e вместо /s, если вы хотите, чтобы также копировались пустые каталоги.
for /D %S IN ("src\*.*") DO @COPY "%S\" "dest\"