feicaixian
@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文件,运行。新文件移入目标目录前,旧文件会备份到工作区,完成文件覆盖前备份

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-09
  • 2022-12-23
  • 2021-05-12
  • 2022-02-20
  • 2021-12-14
猜你喜欢
  • 2021-08-09
  • 2021-10-19
  • 2021-09-11
  • 2021-11-02
  • 2022-12-23
  • 2022-02-13
  • 2021-10-27
相关资源
相似解决方案