[批处理]手动伪造相机自动编号

前几日突然发现我的相机出问题了,无法识别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
View Code

——原文发表于2012-1-21 11:41

你可能感兴趣的:(批处理)