简介
通过generate.bat文件生成外置配置文本文件config.ini,python调用config.ini外置变量参数,从而实现设置定时备份文件的任务。
1. bat脚本部分代码
@echo off set logname=\backup.log echo [config] > config.ini echo 输入拷贝的需备份文件夹路径: set /p file_folder=folderdir= >>config.ini echo 输入拷贝的目的文件夹路径: echo %file_folder% >>config.ini set /p back_folder=folderdir_backup= >>config.ini echo %back_folder% >>config.ini echo 输入备份日志文件夹缓存路径: set /p log_folder=logdir= >>config.ini echo %log_folder%%logname% >>config.ini echo 输入计划启动任务的时间: set /p schedule_time=time= >>config.ini echo %schedule_time% >>config.ini rem 将路径中'\'转换成'//' set strfilepath=config.ini set strold=\ set strnew=// setlocal enabledelayedexpansion for /f "tokens=*" %%i in (%strfilepath%) do ( set "var=%%i" if not !var!.==. ( set "var=!var:%strold%=%strnew%!" echo !var!!>>%strfilepath%.bk ) ) move /y %strfilepath%.bk %strfilepath% >nul echo 正在转换生成配置文件config.ini,请稍等... timeout -t 3 >nul exit
2.cmd窗口填写需要备份的路径以及时间参数
3.config.ini 配置文件自动生成内容
[config] folderdir= e://a folderdir_backup= e://b logdir= e://backup.log time= 10:16
4.日志文件生成
5.backup.py 相关代码
import sys import os import time import datetime from datetime import datetime,timedelta import shutil import configparser #读取config.ini文件变量 config = configparser.configparser() config.read('config.ini') filefolder = config.get('config', 'folderdir') filenamedir = config.get('config', 'folderdir_backup') filebak_log = config.get('config', 'logdir') #读取时间参数 def set_schedule_time(time_str): config.set('config', 'time', time_str) with open('config.ini', 'w') as configfile: config.write(configfile) ''' #备份 def work(): replaced_string = filenamedir.replace('//', '\\') #替换路径中的"//"字符 filename = (replaced_string) + r'\backup_' + time.strftime('%y%m%d%h%m') print('----开始备份----') shutil.make_archive(filename, 'zip', root_dir=filefolder) print('----备份完成--->' + time.strftime('%y%m%d%h%m')+'.zip') with open(filebak_log, 'a') as filebak: #生成日志 filebak.write(time.strftime('%y-%m-%d %h:%m',time.localtime())+':'+'successfull backup to %s'% filename+'.zip!\n') #主函数 def main(): print('----工具启动----') while true: while true: # 获取当前时间 now = datetime.now() current_time = f"{now.hour:02d}:{now.minute:02d}" if current_time == config['config']['time']: break work() time.sleep(180) if __name__ == '__main__': main() #print(list(os.walk(filenamedir)))
到此这篇关于python实现定时自动备份文件的文章就介绍到这了,更多相关python自动备份文件内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论