一键备份多个文件夹

it2023-11-05  82

新建一个文本文档,命名为路径

内容如下:

D:\3dMaxWorkplace D:\Desktop\3dMax作业 D:\Desktop\界面设计

(文件夹中不能有空格)

复制如下代码,保存为bat,运行即可

@echo off setlocal enabledelayedexpansion echo 备份到U盘: for /f %%i in (%~dp0路径.txt) do set "pt=%%i"&echo %%i&call :getname %%i&xcopy "!pt!\*.*" "F:\备份\!fn!\" /s /h /d /c /y echo 备份到桌面: for /f %%i in (%~dp0路径.txt) do set "pt=%%i"&echo %%i&call :getname %%i&xcopy "!pt!\*.*" "D:\Desktop\备份\!fn!\" /s /h /d /c /y pause exit :getname set "fn=%~nx1"

代码运行机制的解释:

从一个文本文档读取多个待备份的目录,获取其文件夹名

在目的路径下新建一个同名文件夹,然后将目录下的文件复制到该文件夹中

效果:

注释:

@echo off 隐藏输入的原命令

变量延迟的启动语句是“setlocal enabledelayedexpansion”,并且变量要用一对叹号“!!”括起来(注意要用英文的叹号),否则就没有变量延迟的效果。简单来说,开启后才可以修改变量的值。

%~dp0 批处理文件所在目录

call 调用

getname分支(相当于一个函数),传入一个路径,获取文件夹的名称,设为变量fn(folder name)

%~nx1获取文件夹名或者文件名(包含后缀)

总结:

xcopy的路径最后需要带一个斜杠,不然计算机不知道它是文件还是文件夹,它就会询问你

最新回复(0)