Пакетное копирование всех файлов в подпапках в место назначения без воссоздания подпапок - PullRequest
0 голосов
/ 27 октября 2019

Я все еще довольно плохо знаком с пакетным сценарием, но в настоящее время я работаю над пакетным файлом, который при запуске позволяет мне выбрать исходную и целевую папку из меню. Теперь в моей исходной папке есть подкаталоги с большим количеством каталогов в них. Я пытаюсь заставить пакетный файл взять все файлы из моей исходной папки и скопировать их в одну папку [Destination] без воссоздания структуры папок, чтобы все файлы в моих подкаталогах-источниках были скомпилированыdestination.

Я пробовал xcopy, robocopy и, в некоторой степени, циклы. Я предполагаю, что это должно быть сделано для циклов, однако я не уверен, какой код я должен использовать для этого. Я хотел бы, чтобы все типы файлов работали с этой программой, а не только: jpg, jpeg, png и gif.

Спасибо за помощь.

@echo off
title File Copier
color 0a

:Menu
cls
echo Main Menu
echo ---------
echo Press 1 to copy files
echo.
echo Press 2 for information
echo.
echo Press 3 to exit
echo ---------------

set /p input=
if %input% == 1 goto 1
if %input% == 2 goto 2
if %input% == 3 goto 3
goto Menu

:1
rem Source
cls
echo Please select your source folder.
echo ---------------------------------
setlocal
set "psCommand="(new-object -COM 'Shell.Application')^
.BrowseForFolder(0,'Please select your source folder:',0,0).self.path""
for /f "usebackq delims=" %%I in (`powershell %psCommand%`) do set "folder=%%I"
setlocal enabledelayedexpansion
cls

rem Destination
echo Please select your destination folder.
echo --------------------------------------
set "psCommand="(new-object -COM 'Shell.Application')^
.BrowseForFolder(0,'Please select your destination folder:',0,0).self.path""
for /f "usebackq delims=" %%I in (`powershell %psCommand%`) do set "folder2=%%I"
setlocal enabledelayedexpansion
cls

rem Source/Destination Info
Set source=!folder!
Set target=!folder2!
Echo Source: %source%
Echo Destination: %target%
echo ---------------------------------------------------------------------

:Choice
set /P c=Would you like to proceed? [Y/N]
if /I "%c%" EQU "Y" goto Yes
if /I "%c%" EQU "N" goto No
goto Choice

:Yes
cls
rem echo D | xcopy %source% %target% /-y
rem robocopy "%source%" "%destination%" *.* /E
for /d %a in (%source%) do @copy %a\*.jpg %target%
for /d %a in (%source%) do @copy %a\*.png %target%
for /d %a in (%source%) do @copy %a\*.gif %target%
pause
goto Success

:No
goto 1

:Success
cls
echo The file(s) were successfully copied.
timeout /t 4 >nul
goto Menu
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...