标题: [文件操作] [已解决]求助优化windows2003文件服务器的备份bat代码 [打印本页]
作者: cLeoLiuyin 时间: 2017-9-16 20:31 标题: [已解决]求助优化windows2003文件服务器的备份bat代码
本帖最后由 cLeoLiuyin 于 2017-9-16 22:19 编辑
新手第一次尝试自己编写bat实战文件服务器备份,已经测试初步达成目标,但是仍然存在缺陷。
缺陷1:如果需要增加需要备份的路径,则需要新增变量,并且新增代码段
缺陷2:如果目标服务器文件已经删除,不会自动删除备份中的历史文件
学习目的1:简单代码的使用,仅此一,无需二,意思是不希望通过准备一个配置txt文件存放需要备份的变量信息,然后运行一个bat来读,也不希望额外生成临时文件来存放变量信息,for来取变量值,用简单代码实现。
学习目的2:通过简单代码,重构类似数组,robocopy功能,毕竟windows 2003本身无该功能。
求教各位大仙,优化我的bat脚本,谢谢。
环境:windows 2003服务器
目标:备份另一台文件服务器上的共享文件夹内制定目录下的文件(通过计划任务定期周六晚上启动该脚本进行备份更新)
代码:- @echo off
-
- rem 设置变量backupfrom,需要备份文件的完整目标路径
- set s_bk_from=\\172.16.0.12
- rem 设置变量backupto存入备份文件的完整路径,例如:f:\itdata或者\\172.16.0.6
- set s_bk_to=g:\backup
-
- rem 设置变量s_01至s_99需要备份的文件夹名称,增加一个变量,需要检查下面是否同步COPY了改变量的处理过程
- rem 如果路径名中包含特殊字符串,需要用转移字符标识,例如Print&Dye需要写为Print^&Dye
- set s_01=Account
- set s_02=Cwong
- set s_03=TimeCard
- set s_04=Sales
- set s_05=Print^&Dye
- set s_06=it-b\IKO-CLUB-WORK
- set s_07=it-b\IT工作
- set s_08=it-b\源文件
- set s_09=it-b\系统运行文件
- set s_10=it-b\系统
- set s_11=it-b\软件
-
- rem 如果存放备份文件的路径不存在,则先创建用于存放备份文件的文件夹
- if not exist "%s_bk_to%" md "%s_bk_to%"
- rem 需要进入到存放备份文件的磁盘跟目录下,才可以对该盘进行读写操作
- %s_bk_to:~0,2%
- cd "%s_bk_to%"
-
- rem 备份变量s_01目录文件
- if not exist "%s_01%" md "%s_01%"
- xcopy "%s_bk_from%\%s_01%" "%s_bk_to%\%s_01%" /s/e/d/y
-
- rem 备份变量s_02目录文件
- if not exist "%s_02%" md "%s_02%"
- xcopy "%s_bk_from%\%s_02%" "%s_bk_to%\%s_02%" /s/e/d/y
-
- rem 备份变量s_03目录文件
- if not exist "%s_03%" md "%s_03%"
- xcopy "%s_bk_from%\%s_03%" "%s_bk_to%\%s_03%" /s/e/d/y
-
- rem 备份变量s_04目录文件
- if not exist "%s_04%" md "%s_04%"
- xcopy "%s_bk_from%\%s_04%" "%s_bk_to%\%s_04%" /s/e/d/y
-
- rem 备份变量s_05目录文件
- if not exist "%s_05%" md "%s_05%"
- xcopy "%s_bk_from%\%s_05%" "%s_bk_to%\%s_05%" /s/e/d/y
-
- rem 备份变量s_06目录文件
- if not exist "%s_06%" md "%s_06%"
- xcopy "%s_bk_from%\%s_06%" "%s_bk_to%\%s_06%" /s/e/d/y
-
- rem 备份变量s_07目录文件
- if not exist "%s_07%" md "%s_07%"
- xcopy "%s_bk_from%\%s_07%" "%s_bk_to%\%s_07%" /s/e/d/y
-
- rem 备份变量s_08目录文件
- if not exist "%s_08%" md "%s_08%"
- xcopy "%s_bk_from%\%s_08%" "%s_bk_to%\%s_08%" /s/e/d/y
-
- rem 备份变量s_09目录文件
- if not exist "%s_09%" md "%s_09%"
- xcopy "%s_bk_from%\%s_09%" "%s_bk_to%\%s_09%" /s/e/d/y
-
- rem 备份变量s_10目录文件
- if not exist "%s_10%" md "%s_10%"
- xcopy "%s_bk_from%\%s_10%" "%s_bk_to%\%s_10%" /s/e/d/y
-
- rem 备份变量s_11目录文件
- if not exist "%s_11%" md "%s_11%"
- xcopy "%s_bk_from%\%s_11%" "%s_bk_to%\%s_11%" /s/e/d/y
复制代码
作者: bbaa 时间: 2017-9-16 21:12
本帖最后由 bbaa 于 2017-9-16 21:18 编辑
无法保证旧版本CMD是否能正常运行- @echo off
- setlocal enabledelayedexpansion
- rem 设置变量backupfrom,需要备份文件的完整目标路径
- set s_bk_from=\\172.16.0.12
- rem 设置变量backupto存入备份文件的完整路径,例如:f:\itdata或者\\172.16.0.6
- set s_bk_to=g:\backup
-
- rem 设置变量s_01至s_99需要备份的文件夹名称,每增加一个变量,需要检查下面是否同步COPY了改变量的处理过程
- rem 如果路径名中包含特殊字符串,需要用转移字符标识,例如Print&Dye需要写为Print^&Dye
- for %%i in (
- "Account"
- "Cwong"
- "TimeCard"
- "Sales"
- "Print^&Dye"
- "it-b\IKO-CLUB-WORK"
- "it-b\IT工作"
- "it-b\源文件"
- "it-b\系统运行文件"
- "it-b\系统"
- "it-b\软件"
- ) do (
- set "s_!Count!=%%~i"
- set /a Count+=1
- )
-
- rem 如果存放备份文件的路径不存在,则先创建用于存放备份文件的文件夹
- if not exist "%s_bk_to%" md "%s_bk_to%"
- rem 需要进入到存放备份文件的磁盘根目录下,才可以对该盘进行读写操作
- %s_bk_to:~0,2%
- cd /d "%s_bk_to%"
-
- rem 备份文件
- for /f "delims== tokens=2" %%i in ('Set S_') do (
- md %%~i>nul 2>nul
- xcopy "%s_bk_from%\%%~i" "%s_bk_to%\%%~i" /s/e/d/y
- )
复制代码
- @echo off
- setlocal enabledelayedexpansion
- rem 设置变量backupfrom,需要备份文件的完整目标路径
- set s_bk_from=\\172.16.0.12
- rem 设置变量backupto存入备份文件的完整路径,例如:f:\itdata或者\\172.16.0.6
- set s_bk_to=g:\backup
-
- rem 如果路径名中包含特殊字符串,需要用转移字符标识,例如Print&Dye需要写为Print^&Dye
- rem 如果存放备份文件的路径不存在,则先创建用于存放备份文件的文件夹
- if not exist "%s_bk_to%" md "%s_bk_to%"
- rem 需要进入到存放备份文件的磁盘根目录下,才可以对该盘进行读写操作
- %s_bk_to:~0,2%
- cd /d "%s_bk_to%"
- rem 每增加一个变量,需要检查下面是否同步COPY了改变量的处理过程
- for %%i in (
- "Account"
- "Cwong"
- "TimeCard"
- "Sales"
- "Print^&Dye"
- "it-b\IKO-CLUB-WORK"
- "it-b\IT工作"
- "it-b\源文件"
- "it-b\系统运行文件"
- "it-b\系统"
- "it-b\软件"
- ) do (
- md %%~i>nul 2>nul
- xcopy "%s_bk_from%\%%~i" "%s_bk_to%\%%~i" /s/e/d/y
- )
复制代码
作者: cLeoLiuyin 时间: 2017-9-16 22:17
谢谢,测试可用,简单了许多,学习了。- @echo off
-
- rem 设置变量backupfrom,需要备份文件的完整目标路径
- set s_bk_from=\\172.16.0.12
- rem 设置变量backupto存入备份文件的完整路径,例如:f:\itdata或者\\172.16.0.6
- set s_bk_to=g:\backup
-
- rem 需要进入到存放备份文件的磁盘跟目录下,才可以对该盘进行读写操作
- if not exist "%s_bk_to%" md "%s_bk_to%"
- %s_bk_to:~0,2%
- cd "%s_bk_to%"
-
- rem 需要备份的文件夹,添加到for里,循环处理备份工作
- for %%i in (
- "Account"
- "Cwong"
- "TimeCard"
- "Sales"
- "Print&Dye"
- "it-b\IKO-CLUB-WORK"
- "it-b\IT工作"
- "it-b\源文件"
- "it-b\系统运行文件"
- "it-b\系统"
- "it-b\软件"
- ) do (
- md %%~i>nul 2>nul
- xcopy "%s_bk_from%\%%~i" "%s_bk_to%\%%~i" /s/e/d/y
- )
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |