仅当文件大小大于时,才使用文件列表从文件夹和子文件夹复制文件的批处理文件

时间:2017-05-17 10:59:36

标签: database batch-file size jpeg xcopy

我们的数据库中有仓库库存的图片。 我们将这些图像的文件名列表拉入.txt文件。

file-list.txt的内容将是例如:

060128412948.jpg
068912475982.jpg
etc.

我们每个库存有3张图片,其中2张是低分辨率,1张是高分辨率图片。

我需要脚本只将每个库存的高分辨率图像从文件夹/子文件夹复制到母目录中。

这是我到目前为止所做的,但这只是从源目标文件夹中复制文件列表中列出的文件。

@echo off

set src_folder=C:\Users\jakub.parszewski\Desktop\TT\SalesOrders\NewOrder
set dst_folder=C:\Users\jakub.parszewski\Desktop\TT\Test
set file_list=C:\Users\jakub.parszewski\Desktop\TT\File-list.txt

set maxbytesize=300000

for /f "delims=" %%A in (%file_list% do set size=%%~zA

for /f "delims=" %%f in (%file_list%) do (
    if %size% GTR %maxbytesize% 
    xcopy "%src_folder%\%%f" "%dst_folder%\"
)

pause

1 个答案:

答案 0 :(得分:0)

虽然您考虑可能更好的方法来实现更健壮的方法,但这里有一个For循环示例,使用的方法类似于您的原始意图。

@Echo Off

Set "src_folder=%UserProfile%\Desktop\TT\SalesOrders\NewOrder"
Set "dst_folder=%UserProfile%\Desktop\TT\Test"
Set "file_list=%UserProfile%\Desktop\TT\File-list.txt"
Set "maxbytesize=3000"

For /F "UseBackQ Delims=" %%A In ("%file_list%") Do For /F %%B In (
    'Where/T /F "%src_folder%":"%%~nxA" 2^>Nul'
) Do If %%B Gtr %maxbytesize% Copy "%src_folder%\%%~nxA" "%dst_folder%">Nul

Pause

我使用Copy,因为您的XCopy示例并未使用基本副本之外的任何选项。