批处理将多个文件夹里的所有N张jpg、gif图片随机各选一张,转移到一个新文件夹里?

求教!
现有多个文件夹01-08,每个文件夹中各有10张图片(格式jpg、gif都有)
如何通过批处理,能够将01-08文件夹中各自随机移动一张图片到新文件夹,原有01-08文件夹中图片不存在了
这样操作能一次性生成了10个新文件夹,将文件夹中10张图片全部处理了。

第1个回答  2020-09-22
你的意思是在每个文件夹中复制一张分别保存,然后把原本文件夹删除?
去掉重复的图片吧
用BAT脚本试试 简单追问

嗯嗯!
01-08的文件夹各有10张图片,每个文件夹中随机抽取一张剪切到一个新文件夹。原本文件夹中的图片自动删除。
这样操作一共生成10个新的文件夹。
求教要怎么做。谢谢!

谢谢!
不过我不是整体筛选格式来剪切,是我的文件夹中都是图片,我现在不知道如何解决每个文件夹随机抽取一张图片剪切到新文件夹。这个批处理不知道要用什么代码。

第2个回答  2020-09-22
以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的多个文件夹放一起运行
<# :
cls
@echo off
rem 从多个子文件夹里分别随机抽取一个jpg或gif图片文件剪切/移动到一个新的文件夹里
mode con lines=3000
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]::Default))) -Args '%~f0'"
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>
$self=get-item -liter $args[0];
$path=$self.Directory.FullName;
$newfolder=".\#result";
$newfolder=$newfolder.trimend('\') -replace '^\.',$path;
$folders=@(dir -liter $path|?{($_.FullName -ne $newfolder) -and ($_ -is [System.IO.DirectoryInfo])});
for($i=0;$i -lt $folders.length;$i++){
$files=@(dir -liter $folders[$i].FullName|?{(@('.jpg','.gif') -contains $_.Extension) -and ($_ -is [System.IO.FileInfo])});
if($files.length -ge 1){
$arr=@(get-random -input $files -count $files.length);
for($i=0;$i -lt $arr.length;$i++){
$newpath=$newfolder+'\'+($i+1).toString();
if(-not (test-path -liter $newpath)){[void](md $newpath -force);};
write-host ($arr[$i].FullName+' --> '+$newpath);
};
};
}追问

为啥一直在循环运行哦?是图片不能中文名还是有什么其他设置的要求吗?

追答

按运行代码后窗口标题栏中的提示联系我