请教批处理大虾,如何将一堆不同时期拍摄的照片按修改日期自动创建文件夹进行归档?

具体为:执行该批处理后,实现读取当前路径下所有文件(照片)的修改日期,根据日期创建一组文件夹(一个日期仅创建一个文件夹),之后将当前路径下所有文件按修改日期移动至对应的文件夹下。

不清楚你的实际文件/情况,仅以问题中的说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起双击运行<# :
cls&echo off&cd /d "%~dp0"&mode con lines=5000
rem 将当前目录里多个jpg图片文件按照修改日期或拍摄日期划分/归类到不同文件夹里
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
set "current=%cd%"
rem 1为修改日期  2为拍摄日期
set "datetype=1"
powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
echo;%#% +%$%%$%/%_% %z%
pause
exit
#>
$b=[Convert]::FromBase64String("IC0tPiA=");
$c=[Text.Encoding]::Default.GetString($b);
Add-Type -AssemblyName 'System.drawing';
$current=$env:current;
$datetype=$env:datetype;
$files=@(dir -literal $current|?{(@(".jpg",".jpeg") -contains $_.Extension) -and ($_ -is [System.IO.FileInfo])});
for($i=0;$i -lt $files.length;$i++){
    $t='';
    if($datetype -eq '1'){$t=$files[$i].LastWriteTime.ToString('yyyy-MM-dd HH:mm:ss');}
    if($datetype -eq '2'){
        $img=[System.Drawing.Image]::FromFile($files[$i].FullName);
        foreach($it in $img.PropertyItems){
            if($it.Id -eq 0x9003){
                $t=[System.Text.Encoding]::ASCII.GetString($it.Value) -replace '\x00$','';
                break;
            }
        }
        $img.Dispose();
    }
    if($t -ne ''){
        $newfolder=($t.trim().replace(':','-') -split '\s+')[0];
        if(-not (test-path -literal $newfolder)){[void][IO.Directory]::CreateDirectory($newfolder);}
        $files[$i].Name+$c+$newfolder;
    }
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-06-04

不处理子文件夹吧?假定照片是jpg文件,可据实际情况修改第2行代码 (如有多种以空格分隔) 

@echo off&cd/d "%~dp0"
set x=*.jpg
for /f "tokens=1,3*" %%i in ('dir/a-d %x%^|findstr/b [12]')do (
   if not exist %%i\ md %%i
   move "%%k" %%i\
   echo %%k ===^> %%i)
pause

追问

附报错截图

追答

哦 原来你系统日期格式不是一般默认的-作分隔符而是/  它不能作文件夹名而出错

@echo off&cd/d "%~dp0" 
set x=*.jpg
for /f "tokens=1,3*" %%i in ('dir/a-d %x%^|findstr/b [12]')do ( 
  set "da=%%i"&set "fn=%%k"
  setlocal enabledelayedexpansion
  set "da=!da:/=-!"
  if not exist !da!\ md !da!
  move "!fn!" !da!\
  echo !fn! ===^> !da!
  endlocal)
pause

本回答被提问者和网友采纳

请教批处理大虾,如何将一堆不同时期拍摄的照片按修改日期自动创建文件夹...
另存为xx.bat,编码选ANSI,跟要处理的文件放一起双击运行<# :cls&echo off&cd \/d "%~dp0"&mode con lines=5000rem 将当前目录里多个jpg图片文件按照修改日期或拍摄日期划分\/归类到不同文件夹里set #=Any question&set _=WX&set $=Q&set\/az=0x53b7e0b4title %#% +%$%%$%\/%_% %z...

C盘 Application Data文件夹显示2.8GB,可是查看里面所有文件才100多MB...
9、XP会自动备份硬件的驱动程序,但在硬件的驱动安装正确后,一般变动硬件的可能性不大,所以也可以考虑将这个备份删除,文件位于\\windows\\driver cache\\i386目录下,名称为driver.cab,你直接将它删除就可以了,通常这个文件是74M。 10、删除不用的输入法:对很多网友来说,Windows XPt系统自带的输入法并不全部都合适自己的...

相似回答