我需要将文本文件中列出的几个文件复制到一个新文件夹中,我不是计算机向导,所以请温和并简化它:)
(文件名称类似于 201609-ABCD.pdf)
我认为下面会这样做,但不知道如何运行它。
{ 遍历文本文件:
对于 /f "delims=" %%L in (foo.txt) 复制文件:
复制“%%L”new_folder 完成:
for /f "delims=" %%L in (foo.txt) do copy "%%L" new_folder }
- 如果Source Folder、Destination Folder和File List位于同一路径下:
FileList: D:\Files\FileList.txt
SourceFolder: D:\Files\SourceFolder
DestinationFolder: D:\Files\DestinationFolder
Run Code Online (Sandbox Code Playgroud)
而FileList只包含文件的名称和扩展名:
File1.txt
File2.pdf
File3.docx
File4.jpg
Run Code Online (Sandbox Code Playgroud)
那么你的脚本是:
@echo off
pushd D:\Files
for /f "tokens=* delims=" %%a in ('type FileList.txt') do xcopy /hrkvy ".\SourceFolder\%%a" ".\DestinationFolder"
popd
pause
Run Code Online (Sandbox Code Playgroud)
- 如果Source Folder、Destination Folder和File List位于同一路径下:
FileList: D:\Files\FileList.txt
SourceFolder: D:\Files\SourceFolder
DestinationFolder: D:\Files\DestinationFolder
Run Code Online (Sandbox Code Playgroud)
和文件清单中包含完整路径的文件:
D:\Files\SourceFolder\File1.txt
D:\Files\SourceFolder\File2.jpg
D:\Files\SourceFolder\File3.docx
Run Code Online (Sandbox Code Playgroud)
那么你的脚本是:
@echo off
pushd D:\Files
for /f "tokens=* delims=" %%a in ('type FileList.txt') do xcopy /hrkvy "%%a" ".\DestinationFolder"
popd
pause
Run Code Online (Sandbox Code Playgroud)
- 如果Destination Folder和File List位于同一路径下并且SourceFolder是可变的:
FileList: D:\Files\FileList.txt
SourceFolder: %SourceFolder%
DestinationFolder: D:\Files\DestinationFolder
Run Code Online (Sandbox Code Playgroud)
而FileList只包含文件的名称和扩展名:
File1.txt
File2.jpg
File3.docx
Run Code Online (Sandbox Code Playgroud)
那么你的脚本是:
@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
Run Code Online (Sandbox Code Playgroud)
- 如果Destination Folder和File List位于不同的路径下:
FileList: D:\Files\FileList.txt
DestinationFolder: C:\DestinationFolder
Run Code Online (Sandbox Code Playgroud)
而FileList指向不同位置的文件:
D:\Files\File1.txt
C:\WorkFiles\File2.jpg
E:\File3.docx
Run Code Online (Sandbox Code Playgroud)
那么你的脚本是:
@echo off
for /f "tokens=* delims=" %%a in ('type "D:\Files\FileList.txt"') do xcopy /hrkvy "%%a" "C:\DestinationFolder"
pause
Run Code Online (Sandbox Code Playgroud)
- 如果Destination Folder和File List位于不同的路径下并且SourceFolder是可变的:
FileList: D:\Files\FileList.txt
SourceFolder: %SourceFolder%
DestinationFolder: C:\DestinationFolder
Run Code Online (Sandbox Code Playgroud)
而FileList只包含文件的名称和扩展名:
File1.txt
File2.jpg
File3.docx
Run Code Online (Sandbox Code Playgroud)
那么你的脚本是:
@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
Run Code Online (Sandbox Code Playgroud)
更新:
要在 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
Run Code Online (Sandbox Code Playgroud)
将其粘贴到.txt文件中并将其扩展名重命名为.cmd并运行它。
如果您没有源目录的读取权限或目标目录的写入权限,请以管理员身份运行脚本。
不要忘记用真实的文件路径替换示例。
| 归档时间: |
|
| 查看次数: |
25671 次 |
| 最近记录: |