zoukankan      html  css  js  c++  java
  • [批处理]手动伪造相机自动编号

    前几日突然发现我的相机出问题了,无法识别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:"=%	emp"
    ::此处修改前导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:"=%	emp" "%dest:"=%\%string:#=!filename!%" 1>nul
      echo 生成文件%%i/%end%
    )
    del "%dest:"=%	emp"
    echo.&echo 完成!
    echo 按任意键退出
    pause>nul
    View Code

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

  • 相关阅读:
    CCF认证201809-2买菜
    git删除本地保存的账号和密码
    mysql表分区
    使用java代码将时间戳和时间互相转换
    Mysql数据库表被锁定处理
    mysql查询某个数据库表的数量
    编译nginx错误:make[1]: *** [/pcre//Makefile] Error 127
    LINUX下安装pcre出现WARNING: 'aclocal-1.15' is missing on your system错误的解决办法
    linux下安装perl
    [剑指Offer]26-树的子结构
  • 原文地址:https://www.cnblogs.com/xxcanghai/p/4583884.html
Copyright © 2011-2022 走看看