一键备份多个文件夹

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

内容如下:

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的路径最后需要带一个斜杠,不然计算机不知道它是文件还是文件夹,它就会询问你

猜你喜欢

转载自blog.csdn.net/weixin_43673589/article/details/109191675
今日推荐