新建一个文本文档,命名为路径
内容如下:
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的路径最后需要带一个斜杠,不然计算机不知道它是文件还是文件夹,它就会询问你