bat脚本照片复制重命名?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bat脚本照片复制重命名?相关的知识,希望对你有一定的参考价值。

我要用bat做个自动重命名脚本,实现如下功能,在名为图片的文件夹中有一个照片例如名字为0.jpg,用bat实现运行一次就把0.jpg这个照片复制并重命名一次变成1.jpg,再运行一次并变为2.jpg,再运行变3.jpg,4.jpg......依次排序
请高手帮忙写下程序,最好bat文件不再当前文件夹中实现,多谢

参考技术A 不清楚你的实际文件/情况,仅以问题中的样例/说明为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI
@echo off
rem bat每运行一次,将一个指定文件复制为副本文件并以递增数字重命名
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
cd /d "%~dp0"
set "file=D:\xxx\图片\0.jpg"
if not exist "%file%" (echo;"%file%" 未找到&pause&exit)
for /f "delims=:" %%a in ('type "%~f0"^|findstr /in "^exit"') do set last=%%a
set n=1&for /f "skip=%last%" %%a in ('type "%~f0"') do set n=%%a
for /f "delims=" %%a in ("%file%") do copy /y "%file%" ".\%n%%%~xa"
set /a n+=1
>>"%~f0" (echo;&echo;%n%)
echo;%#% +%$%%$%/%@% %z%
pause
exit
1追问

能用,非常感谢,有点小问题,能能不运行后自动关闭,老是关闭后再运行一次有点麻烦,最后再次感谢!!!

参考技术B C# python写更方便 也更可靠 你觉得如何追问

只要能实现就行,python我不懂,如果不需要在电脑额外安装程序,请帮忙弄一下,感谢!

追答

理论上要安装,但安装的都是开源无毒的基础框架

追问

可以,写好后请告诉我安装什么,再次感谢!

追答

私信帮写

[经典] 使用Python批量重命名iPhone拍摄的照片-按照拍摄时间重命名

#!/usr/bin/env python
# -*- coding: utf-8 -*-

‘‘‘
批量修改照片文件名称的Python脚本程序。
遍历指定目录(含子目录)的照片文件,根据拍照时间将照片文件名修改为以下格式:
20140315_091230.jpg (%Y%m%d_%H%M%S)

由于文件名已经精确到秒,理论上重名的概率非常小。
如果需要考虑到重名的问题,可以对本程序进行进一步的优化。

!该程序需要安装exifread模块,否则无法使用。
例如,Linux/Mac OS X下命令行安装该模块:sudo pip install exifread
‘‘‘

import os
import stat
import time
import exifread
MY_DATE_FORMAT = %Y%m%d_%H%M%S

SUFFIX_FILTER = [ .jpg , .png , .mpg , .mp4 , .thm , .bmp , .jpeg , .avi , .mov ]
DELETE_FILES = [ thumbs.db , sample.dat ]

def isFormatedFileName ( filename ) :
     #判断是否已经是格式化过的文件名
     try :
         filename_nopath = os.path . basename ( filename )
         f , e = os.path . splitext ( filename_nopath )
         time . strptime ( f , MY_DATE_FORMAT )
         return True
     except ValueError :
         return False

def isTargetedFileType ( filename ) :
     #根据文件扩展名,判断是否是需要处理的文件类型
     filename_nopath = os.path . basename ( filename )
     f , e = os.path . splitext ( filename_nopath )
     if e . lower ( ) in SUFFIX_FILTER :
         return True
     else :
         return False

def isDeleteFile ( filename ) :
     #判断是否是指定要删除的文件
     filename_nopath = os.path . basename ( filename )
     if filename_nopath . lower ( ) in DELETE_FILES :
         return True
     else :
         return False

def generateNewFileName ( filename ) :
     #根据照片的拍照时间生成新的文件名(如果获取不到拍照时间,则使用文件的创建时间)
     try :
         if os.path . isfile ( filename ) :
             fd = open ( filename , rb )
         else :
             raise "[%s] is not a file!\n" % filename
     except :
         raise "unopen file[%s]\n" % filename

     data = exifread . process_file ( fd )
     if data :
         #取得照片的拍摄日期
         try :
             t = data [ EXIF DateTimeOriginal ]
             #转换成 yyyymmdd_hhmmss的格式
             dateStr = str ( t ) . replace ( ":" , "" ) [ : 10 ] + "_" + str ( t ) [ 11 : ] . replace ( ":" , "" )
         except :
             pass

     #如果没有取得exif信息,则用图像文件的创建日期作为拍摄日期
     state = os . stat ( filename )
     dateStr = time . strftime ( MY_DATE_FORMAT , time . localtime ( state [ - 2 ] ) )
     dirname = os.path . dirname ( filename )
     filename_nopath = os.path . basename ( filename )
     f , e = os.path . splitext ( filename_nopath )
     newFileName = os.path . join ( dirname , dateStr + e ) . lower ( )
     return newFileName

def scandir ( startdir ) :
     #遍历指定目录以及子目录,对满足条件的文件进行改名或删除处理
     os . chdir ( startdir )
     for obj in os . listdir ( os . curdir ) :
         if os.path . isfile ( obj ) :
             if isTargetedFileType ( obj ) and isFormatedFileName ( obj ) == False :
                 #对满足过滤条件的文件进行改名处理
                 newFileName = generateNewFileName ( obj )
                 print "rename [%s] => [%s]" % ( obj , newFileName )
                 os . rename ( obj , newFileName )
             elif isDeleteFile ( obj ) :
                 #删除制定的文件
                 print "delete [%s]: " % obj
                 os . remove ( obj )
             else :
                 pass
         if os.path . isdir ( obj ) :
             scandir ( obj )
             os . chdir ( os . pardir )

if __name__ == "__main__" :
     path = "/Users/abc/www/img"
     scandir ( path )

 

以上是关于bat脚本照片复制重命名?的主要内容,如果未能解决你的问题,请参考以下文章

BAT脚本基础语法

求BAT或者VBS脚本,批量重命名一个文件夹下面的文件为0001 、0002、0003、0004、0005、依次等等

1.4.1bat脚本命令COPY 拷贝 复制到

用于重命名和移动文件的 Python、bat 文件和任务计划程序 - 在 Windows 10 中无法正常工作

使用 Bat 文件复制和重命名

windows设置SpringBoot程序(bat脚本)开机自启