用bat怎样批量提取文件夹及子文件夹下面图片? 150

1.复制所在父级+子级的文件夹结构(子级下的文件夹不需要),并且把复制的父级名字后加“_A+”,子级文件夹名字和复制的一样;2.把子级下名字为“A+”文件夹里的JPG图片... 1.复制所在父级+子级的文件夹结构(子级下的文件夹不需要),并且把复制的父级名字后加“_A+”,子级文件夹名字和复制的一样;2.把子级下名字为“A+”文件夹里的JPG图片复制到新建的对应子级的文件夹里; 展开
 我来答
小C快乐的一天
2021-07-15 · TA获得超过296个赞
知道小有建树答主
回答量:1586
采纳率:94%
帮助的人:66.5万
展开全部

批量导入图片已经是非常普遍的功能了。不论图片名称是否有规律或者是否有在数据库中保存,经过一些专业的设置都可以实现批量导入纸张及布局设置暂且默认A4以及5行2列。然后点击左侧工具栏中“插入位图图片”的图标,先绘制图片样式:

二、添加可变图片 添加不同文件夹中的图片分为两个部分,第一个是先添加文件夹路径及名称,第二部分为添加图片的路径、名称及后缀名

1、双击图片,打开其数据源窗口,点击左侧“+”,在手动输入窗口下方点击坐下浏览,根据路径选择对应的图片添加,保留图片路径的文件夹名称的固定部分,将后续可变内容及图片名称删除:

再次点击左侧“+”使用“序列生成+补齐”的方法添加文件夹名称中的序列号:

2、添加图片路径、名称及后缀名  点击左侧“+”,使用“手动输入”的方法,添加图片路径及图片名称的固定部分并点击添加;

下面可使用“序列生成+补齐”添加图片名称中的可变部分“001、002、003......”,可变内容添加后,可再次点击左侧“+”,使用手动输入添加图片后缀名,然后点击“确定”即可:

数据源内容添加完毕并确定后,就可以在画布上看到导入的图片样式了。然后点击上方工具栏中的打印预览就可以看到批量导入的不同文件夹中的图片效果了。文中开始位置有三个文件夹,每个文件夹中有一个图片,从下图可以看到已经全部自动导入了:

qop_dob
2021-04-27 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.3万
采纳率:79%
帮助的人:3883万
展开全部
不清楚你的实际文件/情况,仅以问题中的样例/说明为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的多个文件夹放一起双击运行
<# :
cls&echo off&mode con lines=5000
rem 从当前目录下的多个文件夹里的子文件夹下查找并提取出一个指定名称文件夹里的图片文件
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::GetEncoding('GB2312')))) -Args '%~f0'"
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>
$self=get-item -liter $args[0];
$path=$self.Directory.FullName;
$folders1=@(dir -liter $path|?{(-not $_.Name.EndsWith("_A+")) -and ($_ -is [System.IO.DirectoryInfo])});
for($i=0;$i -lt $folders1.length;$i++){
$folders2=@(dir -liter $folders1[$i].FullName|?{$_ -is [System.IO.DirectoryInfo]});
for($j=0;$j -lt $folders2.length;$j++){
$folders3=@(dir -liter $folders2[$j].FullName -recurse|?{($_.Name -eq 'A+') -and ($_ -is [System.IO.DirectoryInfo])});
if($folders3.length -ge 1){
$files=@(dir -liter $folders3[0].FullName|?{(@('.jpg','.jpeg','.bmp','.png') -contains $_.Extension) -and ($_ -is [System.IO.FileInfo])});
for($k=0;$k -lt $files.length;$k++){
$newfolder=$folders1[$i].FullName+'_A+\'+$folders2[$j].Name+$files[$k].Directory.FullName.substring($folders3[0].FullName.length);
if(-not (test-path -liter $newfolder)){[void][IO.Directory]::CreateDirectory($newfolder)};
write-host ($files[$k].FullName.substring($path.length)+' --> '+$newfolder.substring($path.length));
}}}}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式