急!用bat制作批处理文件,复制一个文件到多个以日期命名文件夹下并以“文件夹名+文件本名”的形式重命名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了急!用bat制作批处理文件,复制一个文件到多个以日期命名文件夹下并以“文件夹名+文件本名”的形式重命名相关的知识,希望对你有一定的参考价值。

用bat制作批处理文件(有别的方式不用下载软件,仅利用windows内资源亦可),定时复制一个文件(如D:\1\2表格)到多个文件夹(如D:\记录\20120928\),多个文件夹以日期如“20120928”"20120929""20120930"命名,每个月最后一天自动生成下个月的文件夹及复制文件到文件夹内 ,并以“文件夹名+文件本名”如“20120928表格”的形式重命名。
满意会追加悬赏的,不差分的~

set yymmdd=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
md d:\记录\%yymmdd%
copy D:\1\2\表格 d:\记录\%yymmdd%\%yymmdd%表格

第一行:得到 20120928 样式的日期
第二行:创建这个文件夹
第三行:复制文件到这个文件夹并改名追问

第三个您没加后缀,添加xlsx的后缀之后您这个可以,但是只能生成当天的并重命名,那么“每个月最后一天自动生成下个月的文件夹及复制文件到文件夹内”如何做呢?

追答

我不知道你的文件是什么后缀,所以没写,你没有提供详细的信息,所以你当然需要修改相应的代码,以便符合你的文件。

下月的1号,会自动生成当天的文件夹,如 20121001

追问

那我现在执行了,明天就会自动出现29号的文件夹和文件了吗?

追答

你要把批处理文件加入任务计划中,让批处理每天定时自动运行,不需人工管它啦。

把批处理加入任务计划:

开始--附件--系统工具--任务计划
双击 添加任务计划,选你的批处理,设定每天开始运行的时间,OK。

追问

那么如果目录“D:\1\2\ ”需要复制的有两个文件表格1和表格2呢 可以放在一个bat里吗?

追答

多少个都可以啊
如果文件有相同字符,可以用通配符代替不同的部分

参考技术A 我理解你这个不需要每个月最后一天先建立好文件夹,而只需每次复制前建好文件夹即可。假设你是excel表,后缀为 xls,代码如下
------------------------------------------------------------------------------------------------------
@echo off
rem 用当前日期建立一个文件夹
md d:\记录\%date:~0,4%%date:~5,2%%date:~8,2%
rem 复制 d:\1\2表格 文件到刚建立的日期名文件夹内,并重命名为文件夹名+文件本名
copy d:\1\2表格.xls d:\记录\%date:~0,4%%date:~5,2%%date:~8,2%\%date:~0,4%%date:~5,2%%date:~8,2%表格.xls
------------------------------------------------------------------------------------------------------
把以上代码保存在d盘根目录下,名为everycopy.bat,再到命令行执行下列命令
at 12:00 /INTERACTIVE /every:M,T,W,Th,F,S,Su "d:\everycopy.bat"
这样就建立了一个任务计划,每天中午12点会自动运行这个批处理复制文件。时间可以自己改。也可以到控制面板的“任务计划”中手工建立计划
参考技术B 为什么不直接新建TXT文本文件,做好以后再把后缀名TXT改成BAT来制作批处理文件呢?追问

就是问怎么写

追答

copy "d:\1\2表格.exl" "d:\记录\%date%表格.exl"
看下是否能帮助你,这样就可以把D盘1文件夹内的2表格.exl文件复制到D盘记录文件中并重新以日期命名。你去试下。

追问

您这个没能成功,我没能找到原因。。

Bat文件命令学习

上班的时候偶尔会碰到把某个文件夹下的某一类型的所有文件一起复制到另一个文件夹中,如果手动的话还要去看着筛选有点麻烦,于是自己思考打算能不能用脚本去复制,决定用bat文件批处理。

首先要知道bat批处理命令的开始写法,用echo来开始。当然bat文件的命令还有很多现在仅仅用我们需要的命令,如果有不明白的可以查询具体命令。Please refer:http://www.jb51.net/article/5828.htm

在本地磁盘(我以本地F盘为例)找到要查询的源文件夹,比如我要在D:\\vs2015项目文件下找后缀为.cs的文件,把所有.cs文件复制到F:\\back目录下。

新建一个文本文件,在文本文件中输入以下内容:

@ echo off
md F:\\back
for /F %%A in (‘dir /B /S "D:\\vs2015项目文件\\*.cs"‘) DO (copy %%A "F:\\back")

然后把文本文件保存为.bat文件,再把C:\\Windows\\System32目录下的cmd.exe 和新建的bat文件一起拷贝到一个文件夹下。

技术分享
 
然后打开cmd.exe 执行新建的bat文件即可,当然也可以直接双击myBat.bat文件 只不过执行的时候会一闪而过,看不太清楚具体过程。
 技术分享
技术分享
 
这时候看到F盘下的back文件夹增加了很多.cs文件。
技术分享
 
解释一下上面的命令:
@ echo off
md F:\\back
for /F %%A in (‘dir /B /S "D:\\vs2015项目文件\\*.cs"‘) DO (copy %%A "F:\\back")
第一条命令是关闭回显,echo 表示显示此命令后的字符,当不需要显示命令行本身时使用此命令。
第二条命令是创建文件夹,很明显。
第三条有点复杂,使用的for循环,是for循环命令的具体实现。
语法: 
对一组文件中的每一个文件执行某个特定命令。 
 
FOR %%variable IN (set) DO command [command-parameters] 
 
%%variable    指定一个单一字母可替换的参数。 
(set)      指定一个或一组文件。可以使用通配符。 
command     指定对每个文件执行的命令。 
command-parameters 为特定命令指定参数或命令行开关。 
 












以上是关于急!用bat制作批处理文件,复制一个文件到多个以日期命名文件夹下并以“文件夹名+文件本名”的形式重命名的主要内容,如果未能解决你的问题,请参考以下文章

如何使用bat批处理或cmd,:将一个文件复制为“多个副本“(增量备份,自动重命名)到指定目录

如何用bat复制一个文件夹到另一个文件夹去?

怎么用bat复制指定的一个文件到指定文件夹,并重命名?

bat批处理,根据清单中的文件名将多个文件移动到另外一个路径下,如何批量处理?非常感谢!

bat删除指定目录下的所有文件(包括文件夹)、

用bat复制指定文件到指定文件目录下的所有文件夹?