前几日突然发现我的相机出问题了,无法识别SD卡,但是SD卡可以被电脑识别,以为相机坏了
然后去Canon售后一看原来是卡的问题,换了张卡就没事了,虽然不明白这是为什么,但好在相机没坏比什么都好
去电子城买了张8GSD卡后一切回归正常,直到今天早上。。。。
突然在从相机里复制照片到电脑时被提示有重名是否替换?
这时才突然发现,在佳能工程师给我修得时候应该是按了系统复位,把原来的相机编号清空了,相机又开始从0001开始编号
这就导致我很多以前的照片没有办法在存放现在的照片了,因为有的文件名重复了,需要复制前还要改名
这事件多么庞大工作量的工作啊。。。。
现在相机编号到3000多,难道再让我去空照3千多张照片么= =
遂想如果骗过相机,已经照了三千多张了,实验发现非常简单,
只要有重复的文件名,相机就会自动将编号加一,直到没有重复文件名为止
这就简单了,只要我手动构造出这三千的张照片,骗过相机从三千多位置开始编号即可
遂有了以下这个玩意,核心代码只有一行命令,但为了让其更有通用性,增加了很多其它代码
========================================
输入要生成的编号的起始和结束值,这里以从97开始到102结束为例子
重复字符就是每个文件名都相同的字符,要替换的数值用#号代替
如果文件名是IMG_0032.jpg,那么重复字符就是“IMG_#.jpg”
生成结果如下图:
所有创建出来的都是0字节空文件,即使创建几万个文件也不占任何空间!
此BAT关键点在于生成数值的前导“0”,如下图经测试在衔接点处没有任何问题
这里以我相机为例子用4位数值来表示,如果有其他位数的,可自行设置,
下面有更改方法
顺利的将相机骗到了3000号+(手机拍照太不给力了...)
批处理代码,保存至bat文件运行即可:
@echo off title 自动生成空编号文件 小小沧海&setlocal enabledelayedexpansion echo =========自动生成空编号文件============= :start echo 请输入起始编号:(回车确认) set /p start= if /i %start% lss 1 echo 【错误】起始编号错误,请重新输入&pause>nul&cls&goto start :end echo 请输入结束编号: set /p end= if /i %end% lss %start% echo 【错误】结束编号应该大于起始编号,请重新输入&pause>nul&cls&goto end if /i %end% lss 1000 set zero=0 if /i %end% lss 100 set zero=00 if /i %end% lss 10 set zero=000 :string echo 请输入重复字符,编号部分用#号代替:(如IMG_0032.jpg则重复字符为IMG_#.jpg,默认数值4位) set /p string= if %string%==%string:#=% echo 【错误】没有#号可替换部分&pause>nul&cls&goto string :dest echo 请输入目标路径:(可直接将目录拖放至此处) set /p dest= echo ==================== echo 开始生成文件...... cd 1>nul 2>"%dest:"=%\temp" ::此处修改前导0个数,如果是3位则把下面一句geq 1000改为geq 100 ::再将lss 1000这行去掉,并把余下两行最后的zero=后面的0分别去掉一个即可 for /l %%i in (%start%,1,%end%) do ( if /i %%i geq 1000 set zero= if /i %%i lss 1000 set zero=0 if /i %%i lss 100 set zero=00 if /i %%i lss 10 set zero=000 set filename=!zero!%%i copy "%dest:"=%\temp" "%dest:"=%\%string:#=!filename!%" 1>nul echo 生成文件%%i/%end% ) del "%dest:"=%\temp" echo.&echo 完成! echo 按任意键退出 pause>nul
——原文发表于2012-1-21 11:41