用bat怎样批量提取文件夹及子文件夹下面图片? 150
批量导入图片已经是非常普遍的功能了。不论图片名称是否有规律或者是否有在数据库中保存,经过一些专业的设置都可以实现批量导入纸张及布局设置暂且默认A4以及5行2列。然后点击左侧工具栏中“插入位图图片”的图标,先绘制图片样式:
二、添加可变图片 添加不同文件夹中的图片分为两个部分,第一个是先添加文件夹路径及名称,第二部分为添加图片的路径、名称及后缀名:
1、双击图片,打开其数据源窗口,点击左侧“+”,在手动输入窗口下方点击坐下浏览,根据路径选择对应的图片添加,保留图片路径的文件夹名称的固定部分,将后续可变内容及图片名称删除:
再次点击左侧“+”使用“序列生成+补齐”的方法添加文件夹名称中的序列号:
2、添加图片路径、名称及后缀名 点击左侧“+”,使用“手动输入”的方法,添加图片路径及图片名称的固定部分并点击添加;
下面可使用“序列生成+补齐”添加图片名称中的可变部分“001、002、003......”,可变内容添加后,可再次点击左侧“+”,使用手动输入添加图片后缀名,然后点击“确定”即可:
数据源内容添加完毕并确定后,就可以在画布上看到导入的图片样式了。然后点击上方工具栏中的打印预览就可以看到批量导入的不同文件夹中的图片效果了。文中开始位置有三个文件夹,每个文件夹中有一个图片,从下图可以看到已经全部自动导入了:
<# :
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));
}}}}