@echo off
::Date:2018-11-20
echo.
echo MySQL数据库备份脚本
echo
echo Date:2018-11-20
echo 备份日期:%date%
echo 备份时间:%time%
echo.
echo
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
set bakdir="D:\Mysql\mysql-5.7.24-winx64\data"
set sqlcache="D:\mysqlcache"
echo 正在进入MySQL目录
echo 正在备份Mysql数据,请稍等......
if not exist "%sqlcache%" mkdir "%sqlcache%"
for /F %%a in ('dir /ad /b %bakdir%') do (
if not exist "%sqlcache%%%a" mkdir "%sqlcache%%%a"
xcopy "D:\Mysql\mysql-5.7.24-winx64\data%%a" "D:\mysqlcache%%a" /s /E /y >nul
)
if not exist "F:\mysqlbak%Ymd%" mkdir "F:\mysqlbak%Ymd%"
for /f"usebackq tokens=1 delims= /%%a" in (dir /b %sqlcache%)do "D:\WinRar\WinRAR.exe" a -ep1 -r0 -df -exit -- "F:\mysqlbak%Ymd%%%a.rar" %sqlcache%%%a
echo 数据库备份完成......
echo.
你这个都找不到文件夹怎么给你复制呢,还有复制为什么要用循环呢?一次性直接复制过去不就可以了吗
xcopy "D:\Mysql\mysql-5.7.24-winx64\data%%a" "D:\mysqlcache%%a" /s /E /y >nul
你有D:\Mysql\mysql-5.7.24-winx64\data%%a 这个文件夹吗,应该是D:\Mysql\mysql-5.7.24-winx64\data\%%a 这个才对呀!
这上边复制错了,路径是对的,文件夹也是有的
@丽丽圈养的老王: 其实你可以直接复制过去的,感觉没必要使用循环,一个文件夹一个文件夹的复制
@xiaobaiskill: 你上次给我回复了一个方法,我到现在都找不到创建的那个文件夹在哪
mkdir data_copy // 创建文件夹data_copy
xcopy data data_copy /E // 复制data 下所有的文件至data_copy
rar a -r -ep1 "data_copy.rar" "data_copy"
就是这串命令,你能告诉我这个data_copy创建到哪里去了吗?默认是在哪里?C盘?
@丽丽圈养的老王:
cd /d D:/www // 进入D盘的www目录
mkdir test // 创建 test 文件夹 。这个test 文件夹就在 D:/www/test
bat 批处理文件,就相当于将你敲的一系列命令都放到一个文件里面一次性执行了而已。
不懂啊,不过我有个建议,你可以这些代码一行一行单独拿出来执行,这样就知道哪句话没起作用了,然后再想办法,应该会有错误提示吧