3

Мне нужно скопировать несколько файлов, перечисленных в текстовом файле, в новую папку, я не компьютерный мастер, поэтому, пожалуйста, будьте осторожны и упростите это :)

(имена файлов похожи на 201609-ABCD.pdf)

Я думаю, что ниже сделает это, но не знаю, как его запустить.

{Перебрать текстовый файл:

for /f "delims =" %% L in (foo.txt) do Скопируйте файлы:

скопировать "%% L" new_folder Готово:

for /f "delims =" %% L in (foo.txt) сделать копию "%% L" new_folder}

1 ответ1

5
  • Если исходная папка, папка назначения и список файлов находятся по одному и тому же пути:
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 и запустите.

  • Если у вас нет разрешения на чтение из исходного каталога или разрешения на запись в целевой каталог, запустите сценарий от имени администратора.

  • Не забудьте заменить примеры реальными путями к файлам.

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