找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28931|回复: 8

[文件操作] 如何对指定文件复制创建复件/备份并在文件名后面添加当前日期和序号

[复制链接]
发表于 2012-9-26 03:08:05 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2017-4-11 09:18 编辑

我有一个文件经常修改,所以想弄个日期然后接个序号的.
我自己弄了一个,感觉不如意.
特请大神出手相助.
我的目的是这样的:
我的一个固定文件是  日报表.xls
然后我想弄一个批处理,一点,就出来  日报表0926-1.xls
然后再点这个批处理,就出一个新文件 日报表0926-2.xls
  1. set /p n=<编号
  2. set name=日报表%date:~5,2%.%date:~8,2%-%n%.xls
  3. set /a x=%n%+1
  4. >编号 echo %x%
  5. copy /y 日报表.xls %name%
复制代码
这样虽能达到要求,但是就是有一个 生成的文件 编号 用他来装序号.
我现在想,能不能用一个文件实现.
请大神赐教 .
拜谢.
发表于 2012-9-26 10:58:35 | 显示全部楼层
  1. @echo off
  2. set n=1
  3. for /f %%a in ('dir /b 日报表%date:~5,2%.%date:~8,2%-*.xls 2^>nul ^|find /v /c ""') do (
  4.     set /a n+=%%a
  5. )
  6. set name=日报表%date:~5,2%.%date:~8,2%-%n%.xls
  7. copy /y 日报表.xls %name%
复制代码
 楼主| 发表于 2012-9-26 13:49:38 | 显示全部楼层
回复 2# forfiles

    感谢  forfiles   的热心指点.
我在提问的时候,忽略了一点:
当我确认某个备份的文件无用的时候,会删除掉这个文件.
这样,就不能用到上面这个 dir 加 find 再读有几个文件了.
当文件数不对的时候,这个不会像写到一个序号文件一样的继续累加.
继续追问下,有劳了.
 楼主| 发表于 2012-9-26 21:24:15 | 显示全部楼层
我有想过,把 批处理里的内容 再次导出来,生成一个批处理,替换自身.
同时,把序号 +1
但是不知道如何循环导出.
有大神援手一把么.
 楼主| 发表于 2012-9-27 22:28:25 | 显示全部楼层

手工置顶一下.
继续寻找大神出手.
发表于 2012-9-27 23:13:36 | 显示全部楼层
这样子如何?
  1. @echo off
  2. set "name=日报表%date:~5,2%%date:~8,2%"
  3. :11
  4. set /a n+=1
  5. if not exist "%name%-%n%.xls" (
  6.   copy /y 日报表.xls "%name%-%n%.xls"
  7. ) else goto :11
复制代码
发表于 2012-9-27 23:26:23 | 显示全部楼层
本帖最后由 batman 于 2012-9-27 23:30 编辑

为了方便,修改了分格符

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1,2 delims=_." %%a in ('dir /b /o-n 日报表*.xls') do (
  3.   if "%%b" equ "" (
  4.     copy /y 日报表.xls  "日报表%date:~5,2%-%date:~8,2%_1.xls"
  5.     ) else (
  6.     set /a a=%%b+1
  7.     copy /y 日报表.xls  "日报表%date:~5,2%-%date:~8,2%_!a!.xls"
  8.   )
  9.   exit
  10. )

复制代码
 楼主| 发表于 2012-9-28 13:24:32 | 显示全部楼层
回复 6# apang


    感谢 apang  出手相助.
这个能满足开始说的条件,后面补充了一个条件,这个还是不能,当有删除的时候,这个只会补充空缺,不会累加向前.
不过依旧感谢提供这样一个思路.
 楼主| 发表于 2012-9-28 13:58:55 | 显示全部楼层
回复 7# batman


    感谢 batman 的杰作.虽然是改了一个分割符,但这个没关系.除非全部删除备份,或是将最后一个备份删除,其实都正常累加.

思考了很久,一直没想明白这个 批处理里面的那个 条件,为什么是
  1. if "%%b" equ ""
复制代码
而不是
  1. if "%%b" equ "txt"
复制代码
但这两者能都达到要求,其中的原因是什么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 07:20 , Processed in 0.017645 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表