标题: [文件操作] 如何对指定文件复制创建复件/备份并在文件名后面添加当前日期和序号 [打印本页]
作者: ray2350 时间: 2012-9-26 03:08 标题: 如何对指定文件复制创建复件/备份并在文件名后面添加当前日期和序号
本帖最后由 pcl_test 于 2017-4-11 09:18 编辑
我有一个文件经常修改,所以想弄个日期然后接个序号的.
我自己弄了一个,感觉不如意.
特请大神出手相助.
我的目的是这样的:
我的一个固定文件是 日报表.xls
然后我想弄一个批处理,一点,就出来 日报表0926-1.xls
然后再点这个批处理,就出一个新文件 日报表0926-2.xls- set /p n=<编号
- set name=日报表%date:~5,2%.%date:~8,2%-%n%.xls
- set /a x=%n%+1
- >编号 echo %x%
- copy /y 日报表.xls %name%
复制代码
这样虽能达到要求,但是就是有一个 生成的文件 编号 用他来装序号.
我现在想,能不能用一个文件实现.
请大神赐教 .
拜谢.
作者: forfiles 时间: 2012-9-26 10:58
- @echo off
- set n=1
- for /f %%a in ('dir /b 日报表%date:~5,2%.%date:~8,2%-*.xls 2^>nul ^|find /v /c ""') do (
- set /a n+=%%a
- )
- set name=日报表%date:~5,2%.%date:~8,2%-%n%.xls
- copy /y 日报表.xls %name%
复制代码
作者: ray2350 时间: 2012-9-26 13:49
回复 2# forfiles
感谢 forfiles 的热心指点.
我在提问的时候,忽略了一点:
当我确认某个备份的文件无用的时候,会删除掉这个文件.
这样,就不能用到上面这个 dir 加 find 再读有几个文件了.
当文件数不对的时候,这个不会像写到一个序号文件一样的继续累加.
继续追问下,有劳了.
作者: ray2350 时间: 2012-9-26 21:24
我有想过,把 批处理里的内容 再次导出来,生成一个批处理,替换自身.
同时,把序号 +1
但是不知道如何循环导出.
有大神援手一把么.
作者: ray2350 时间: 2012-9-27 22:28
手工置顶一下.
继续寻找大神出手.
作者: apang 时间: 2012-9-27 23:13
这样子如何?- @echo off
- set "name=日报表%date:~5,2%%date:~8,2%"
- :11
- set /a n+=1
- if not exist "%name%-%n%.xls" (
- copy /y 日报表.xls "%name%-%n%.xls"
- ) else goto :11
复制代码
作者: batman 时间: 2012-9-27 23:26
本帖最后由 batman 于 2012-9-27 23:30 编辑
为了方便,修改了分格符- @echo off&setlocal enabledelayedexpansion
- for /f "tokens=1,2 delims=_." %%a in ('dir /b /o-n 日报表*.xls') do (
- if "%%b" equ "" (
- copy /y 日报表.xls "日报表%date:~5,2%-%date:~8,2%_1.xls"
- ) else (
- set /a a=%%b+1
- copy /y 日报表.xls "日报表%date:~5,2%-%date:~8,2%_!a!.xls"
- )
- exit
- )
复制代码
作者: ray2350 时间: 2012-9-28 13:24
回复 6# apang
感谢 apang 出手相助.
这个能满足开始说的条件,后面补充了一个条件,这个还是不能,当有删除的时候,这个只会补充空缺,不会累加向前.
不过依旧感谢提供这样一个思路.
作者: ray2350 时间: 2012-9-28 13:58
回复 7# batman
感谢 batman 的杰作.虽然是改了一个分割符,但这个没关系.除非全部删除备份,或是将最后一个备份删除,其实都正常累加.
思考了很久,一直没想明白这个 批处理里面的那个 条件,为什么是复制代码
而不是复制代码
但这两者能都达到要求,其中的原因是什么?
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |