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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教批处理大虾,如何将一堆不同时期拍摄的照片按修改日期自动创建文件夹进行归档?相关的知识,希望对你有一定的参考价值。

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

不清楚你的实际文件/情况,仅以问题中的说明及猜测为据;以下代码复制粘贴到记事本,另存为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;
    

参考技术A

不处理子文件夹吧?假定照片是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

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

3一张手机照片的诞生过程——手机拍摄(郭卫老师)

1、拍摄环境

(1)高铁列车车么处

拍摄器材,一部手机

技术图片

 

 问题:

*画面倾斜

*无关元素太多,杂乱

*杂光、黑点

2、如何让一张照片看起来陌生

目标:做到画面简洁而不简单,一切与想表达无关的东西都不要在画面中

3、手机修图软件:Snapseed

(1)照片分析,处理哪些地方?

(2)处理警示牌,工具-调整图片-暗部减(高光-亮部、阴影-暗部)

(3)处理小黑点、杂光(加光减光),工具-修复-放大图片使用画笔局部操作

(4)处理窗子上其他元素,工具-裁剪

(5)处理倾斜,工具-旋转

(6)暖色调,工具-调整图片-暖色调

修改前后对比:

 

 技术图片技术图片

工具作用

技术图片

 

以上是关于请教批处理大虾,如何将一堆不同时期拍摄的照片按修改日期自动创建文件夹进行归档?的主要内容,如果未能解决你的问题,请参考以下文章

XP系统如何更改照片拍设时间

请教各位大虾:如何更改已经生成的VB.NET项目及里面的EXE文件的名字?

如何批量修改照片文件名?

如何在 iOS8.1 上使用 Swift 按顺序拍摄多张照片(每张延迟 1 秒)?

如何以照片的拍摄时间批量重命名文件

3d全景效果图如何制作?