巧用批处理拷贝合并整个文件夹

目标功能: 将2个文件夹合并为一个文件夹,这个合并后的文件夹以系统日期来命名。

 

废话少说,直接上代码:

::set newfile=%date:~0,4%%date:~5,2%%date:~8,2%-%time:~0,2%%time:~3,2%%time:~6,2%

:: get current path and date, save to newfile.
set newfile="%~dp0%date:~0,10%"
:: create a new dir, by newfile.
mkdir %newfile%
:: copy the first dir to our dir.
xcopy %1 %newfile% /E /Y
:: copy the second dir to our dir.
xcopy %2 %newfile% /E /Y

:: copy the third dir to our dir.
::xcopy %3 c:\%date:~0,10% /E < all

其中:

( :: 这个代表注释,在程序运行期间,无任何作用)

第一行: set newfile="%~dp0%date:~0,10%" 

%~dp0 用于取得我们的可执行文件的对应具体的绝对路径。

%date:~0,10 用于取得XP系统的日期。

%newfile%: 就是我们用上面2个参数组合成的新文件名。

我们这里声明了一个变量 newfile 用于保存这个文件名,以便我们后期将别的文件内容全部拷贝进来。

第二行: mkdir %newfile%

根据%newfile%, 来创建一个新的文件夹。(位置在可执行程序的当前目录)

第三行: xcopy %1 %newfile% /E /Y

%1 代表给我们这个程序传入的第一个参数。

/E 指明,我们即将拷贝的是整个目录,包括子文件夹的所有文件,但是不包含隐藏文件。

/Y 指明,在拷贝的过程中,无需询问是否覆盖,免去交互应答烦恼。

xcopy 拷贝函数: [指令] [原文件位置] [目标文件位置] [参数选项]

本条指令,是将 %1 里面的所有文件拷贝到 %newfile% 文件夹内。

第四行: xcopy %2 %newfile% /E /Y

%2 代表给我们这个程序传入的第二个参数。

本条指令,是将 %2 里面的所有文件拷贝到 %newfile% 文件夹内。

 

程序用记事本编辑好之后,将后缀名修改为".bat" 就可以执行了。

 

 

后期发现,这个程序在XP系统下运行的很好,但在Win7下执行,创建文件夹时会出点意外。

运行后居然建立了3个父子文件夹,一个是2012,进去后是11,再进去是12.

解决方案为:

将第一行取得系统时间的参数改动一下: %date:~0,4%-%date:~5,2%-%date:~8,2%%date:~10,5%

即有如下代码:

::set newfile=%date:~0,4%%date:~5,2%%date:~8,2%-%time:~0,2%%time:~3,2%%time:~6,2%

:: get current path and date, save to newfile.
:: set newfile="%~dp0%date:~0,10%"
set newfile="%~dp0%date:~0,4%-%date:~5,2%-%date:~8,2%%date:~10,5%"

:: create a new dir, by newfile.
mkdir %newfile%
:: copy the first dir to our dir.
xcopy %1 %newfile% /E /Y
:: copy the second dir to our dir.
xcopy %2 %newfile% /E /Y

:: copy the third dir to our dir.
::xcopy %3 c:\%date:~0,10% /E < all


 

OK , 这是我第一次使用Windows的批处理来解决一些问题。

 


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值