简介
通过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自动备份文件内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论