文件覆盖前备份 批处理

@echo off
setlocal enabledelayedexpansion 
:: 如果for循环内定义变量,请添加此句

set workpath=C:\Users\%username%\Documents\FileReplaceRegion
::工作区路径

if not exist %workpath% (mkdir %workpath%)

set sourcepath=E:\feicaixian\Buffer\TSIS21_2018_10_26\TSIS21
::要被替换的文件所在目录 

set NewFolder=%workpath%\%date:~0,4%年%date:~5,2%月%date:~8,2%日%time:~0,2%点%time:~3,2%分%time:~6,2%秒_backup
::旧文件备份文件夹

mkdir %NewFolder%

dir /b %workpath%\FileToReplace > %workpath%\filename.txt
::获取要被替换的文件的文件名,存入新建txt文件

::备份旧文件
set /a fileNum=0 
for /f "delims=" %%i in (%workpath%\filename.txt) do (
::不加"delims="遇到空格则读完一行数据
set name="%sourcepath%\%%~i"
if exist !name! (
    move !name! %NewFolder%
    set /a fileNum+=1
) else (
    echo [不存在] !name! 
)
)

if %fileNum% equ 0 (rd %NewFolder% && echo 没有旧文件,不必备份) else (echo 备份成功!)

::写入新文件
for /f "delims=" %%a in ('dir /s/b %workpath%\FileToReplace\') do (
  move "%%a" %sourcepath%
)

::删除工作区空目录
for /f "delims=" %%a in ('dir /ad /s /b %workpath%\') do (
  rd "%%a">nul 2>nul
)
::利用rd不带参数只能删除空目录否则报错特性删除空目录。屏蔽报错信息,成功信息也屏蔽掉,默默地完成清理工作
::/b是为了得到简洁输出结果,否则获取到的行数据不是文件路径


pause

 

在文档下建立目录\FileReplaceRegion作为工作区,内建FileToReplace文件夹,放替换文件。在代码中指定目标目录sourcepath,即将要被替换的文件所在的目录。

将代码写入bat文件,运行。新文件移入目标目录前,旧文件会备份到工作区,完成文件覆盖前备份

转载于:https://www.cnblogs.com/feicaixian/p/10692795.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值