- Если исходная папка, папка назначения и список файлов находятся по одному и тому же пути:
FileList: D:\Files\FileList.txt
SourceFolder: D:\Files\SourceFolder
DestinationFolder: D:\Files\DestinationFolder
И FileList содержит только имя и расширение файлов:
File1.txt
File2.pdf
File3.docx
File4.jpg
Тогда ваш скрипт:
@echo off
pushd D:\Files
for /f "tokens=* delims=" %%a in ('type FileList.txt') do xcopy /hrkvy ".\SourceFolder\%%a" ".\DestinationFolder"
popd
pause
- Если исходная папка, папка назначения и список файлов находятся по одному и тому же пути:
FileList: D:\Files\FileList.txt
SourceFolder: D:\Files\SourceFolder
DestinationFolder: D:\Files\DestinationFolder
И FileList содержит полный путь к файлам:
D:\Files\SourceFolder\File1.txt
D:\Files\SourceFolder\File2.jpg
D:\Files\SourceFolder\File3.docx
Тогда ваш скрипт:
@echo off
pushd D:\Files
for /f "tokens=* delims=" %%a in ('type FileList.txt') do xcopy /hrkvy "%%a" ".\DestinationFolder"
popd
pause
- Если папка назначения и список файлов находятся по одному и тому же пути, а SourceFolder является переменной:
FileList: D:\Files\FileList.txt
SourceFolder: %SourceFolder%
DestinationFolder: D:\Files\DestinationFolder
И FileList содержит только имя и расширение файлов:
File1.txt
File2.jpg
File3.docx
Тогда ваш скрипт:
@echo off
pushd D:\Files
set /p SourceFolder=Enter the path of source folder and press 'Enter':
cls
for /f "tokens=* delims=" %%a in ('type FileList.txt') do xcopy /hrkvy "%SourceFolder%\%%a" ".\DestinationFolder"
popd
pause
- Если папка назначения и список файлов находятся по разным путям:
FileList: D:\Files\FileList.txt
DestinationFolder: C:\DestinationFolder
И FileList указывает на файлы в разных местах:
D:\Files\File1.txt
C:\WorkFiles\File2.jpg
E:\File3.docx
Тогда ваш скрипт:
@echo off
for /f "tokens=* delims=" %%a in ('type "D:\Files\FileList.txt"') do xcopy /hrkvy "%%a" "C:\DestinationFolder"
pause
- Если папка назначения и список файлов находятся по разным путям, а SourceFolder является переменной:
FileList: D:\Files\FileList.txt
SourceFolder: %SourceFolder%
DestinationFolder: C:\DestinationFolder
И FileList содержит только имя и расширение файлов:
File1.txt
File2.jpg
File3.docx
Тогда ваш скрипт:
@echo off
set /p SourceFolder=Enter the path of source folder and press 'Enter':
cls
for /f "tokens=* delims=" %%a in ('type "D:\Files\FileList.txt"') do xcopy /hrkvy "%SourceFolder%\%%a" "C:\DestinationFolder"
pause
Обновить:
Чтобы рекурсивно пройтись по подпапкам OneDrive, чтобы найти исходные файлы:
@echo off
pushd D:\Missing Papers
for /f "tokens=* delims=" %%a in ('type MissingPapers.txt"') do (
for /f "tokens=* delims=" %%b in ('dir /b /s "%OneDrive%" ^| find /i "%%a"') do
xcopy /hrkvy "%%b" ".\Searched out"
)
)
pause
Вставьте его в файл .txt
переименуйте его расширение в .cmd
и запустите.
Если у вас нет разрешения на чтение из исходного каталога или разрешения на запись в целевой каталог, запустите сценарий от имени администратора.
Не забудьте заменить примеры реальными путями к файлам.