- If Source Folder, Destination Folder, and the File List reside under the same path:
FileList: D:\Files\FileList.txt
SourceFolder: D:\Files\SourceFolder
DestinationFolder: D:\Files\DestinationFolder
E FileList contém apenas o nome e a extensão dos arquivos:
File1.txt
File2.pdf
File3.docx
File4.jpg
Então o seu script é:
@echo off
pushd D:\Files
for /f "tokens=* delims=" %%a in ('type FileList.txt') do xcopy /hrkvy ".\SourceFolder\%%a" ".\DestinationFolder"
popd
pause
- If Source Folder, Destination Folder, and the File List reside under the same path:
FileList: D:\Files\FileList.txt
SourceFolder: D:\Files\SourceFolder
DestinationFolder: D:\Files\DestinationFolder
E FileList contém o caminho completo para os arquivos:
D:\Files\SourceFolder\File1.txt
D:\Files\SourceFolder\File2.jpg
D:\Files\SourceFolder\File3.docx
Então o seu script é:
@echo off
pushd D:\Files
for /f "tokens=* delims=" %%a in ('type FileList.txt') do xcopy /hrkvy "%%a" ".\DestinationFolder"
popd
pause
- If Destination Folder, and the File List reside under the same path and SourceFolder is variable:
FileList: D:\Files\FileList.txt
SourceFolder: %SourceFolder%
DestinationFolder: D:\Files\DestinationFolder
E FileList contém apenas o nome e a extensão dos arquivos:
File1.txt
File2.jpg
File3.docx
Então o seu script é:
@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
- If Destination Folder, and the File List reside under different paths:
FileList: D:\Files\FileList.txt
DestinationFolder: C:\DestinationFolder
E FileList aponta para arquivos em locais diferentes:
D:\Files\File1.txt
C:\WorkFiles\File2.jpg
E:\File3.docx
Então o seu script é:
@echo off
for /f "tokens=* delims=" %%a in ('type "D:\Files\FileList.txt"') do xcopy /hrkvy "%%a" "C:\DestinationFolder"
pause
- If Destination Folder, and the File List reside under different paths and SourceFolder is variable:
FileList: D:\Files\FileList.txt
SourceFolder: %SourceFolder%
DestinationFolder: C:\DestinationFolder
E FileList contém apenas o nome e a extensão dos arquivos:
File1.txt
File2.jpg
File3.docx
Então o seu script é:
@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
Atualização:
Para percorrer recursivamente nas subpastas do OneDrive para localizar arquivos de origem:
@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
-
Cole-o em um arquivo
.txt
e renomeie sua extensão para.cmd
e execute-a. -
Se você não tiver permissão de leitura do diretório de origem ou de permissão de gravação no diretório de destino, execute o script como administrador.
-
Não se esqueça de substituir exemplos por caminhos de arquivos reais.