可能略微超过下班时间(卷王版本)
import os
import random
from datetime import datetime, timedelta
CONFIG = {
"FOLDER_PATH": r"C:\Users\1\Desktop\效果比对",
"WORK_START_HOUR": 17,
"WORK_END_HOUR": 18,
"MIN_INTERVAL": 0,
"MAX_INTERVAL": 30,
"DAYS_BACK": 0,
"INCLUDE_SUBFOLDERS": True,
"VERBOSE": True
}
def get_random_time(target_date, config):
"""生成一个在工作时间范围内的随机时间"""
base_time = target_date.replace(
hour=config["WORK_START_HOUR"],
minute=random.randint(0, 59),
second=random.randint(0, 59),
microsecond=0
)
available_minutes = (config["WORK_END_HOUR"] - config["WORK_START_HOUR"]) * 60
random_minutes = random.randint(0, available_minutes)
return base_time + timedelta(minutes=random_minutes)
def update_file_times(config=CONFIG):
"""
更新指定文件夹中所有文件的修改时间
"""
if config["WORK_END_HOUR"] <= config["WORK_START_HOUR"]:
print("错误:结束时间必须大于开始时间!")
return
target_date = datetime.now() - timedelta(days=config["DAYS_BACK"])
files = []
try:
if config["INCLUDE_SUBFOLDERS"]:
for root, _, filenames in os.walk(config["FOLDER_PATH"]):
for filename in filenames:
files.append(os.path.join(root, filename))
else:
files = [os.path.join(config["FOLDER_PATH"], f)
for f in os.listdir(config["FOLDER_PATH"])
if os.path.isfile(os.path.join(config["FOLDER_PATH"], f))]
except Exception as e:
print(f"读取文件夹失败: {str(e)}")
return
if not files:
print("错误:文件夹为空或路径不存在!")
return
random.shuffle(files)
for file_path in files:
try:
random_time = get_random_time(target_date, config)
os.utime(file_path, (random_time.timestamp(), random_time.timestamp()))
if config["VERBOSE"]:
print(f"已更新文件: {os.path.basename(file_path)}")
print(f"新的修改时间: {random_time.strftime('%Y-%m-%d %H:%M:%S')}")
print("-" * 50)
except Exception as e:
print(f"更新文件时间失败: {file_path}")
print(f"错误信息: {str(e)}")
if __name__ == "__main__":
update_file_times()
不会超过下班时间(窝囊费版本)
import os
import random
from datetime import datetime, timedelta
CONFIG = {
"FOLDER_PATH": r"C:\Users\1\Desktop\效果比对",
"WORK_START_HOUR": 17,
"WORK_END_HOUR": 18,
"MIN_INTERVAL": 0,
"MAX_INTERVAL": 60,
"DAYS_BACK": 0,
"INCLUDE_SUBFOLDERS": True,
"VERBOSE": True
}
def get_random_time(target_date, config):
"""生成一个在工作时间范围内的随机时间"""
end_minutes = 59 if config["WORK_END_HOUR"] > config["WORK_START_HOUR"] else 0
total_minutes = (config["WORK_END_HOUR"] - config["WORK_START_HOUR"]) * 60 - 1
random_minutes = random.randint(0, total_minutes)
base_time = target_date.replace(
hour=config["WORK_START_HOUR"],
minute=0,
second=random.randint(0, 59),
microsecond=0
)
random_time = base_time + timedelta(minutes=random_minutes)
if random_time.hour >= config["WORK_END_HOUR"]:
random_time = random_time.replace(
hour=config["WORK_END_HOUR"]-1,
minute=random.randint(0, 59)
)
return random_time
def update_file_times(config=CONFIG):
"""
更新指定文件夹中所有文件的修改时间
"""
if config["WORK_END_HOUR"] <= config["WORK_START_HOUR"]:
print("错误:结束时间必须大于开始时间!")
return
target_date = datetime.now() - timedelta(days=config["DAYS_BACK"])
files = []
try:
if config["INCLUDE_SUBFOLDERS"]:
for root, _, filenames in os.walk(config["FOLDER_PATH"]):
for filename in filenames:
files.append(os.path.join(root, filename))
else:
files = [os.path.join(config["FOLDER_PATH"], f)
for f in os.listdir(config["FOLDER_PATH"])
if os.path.isfile(os.path.join(config["FOLDER_PATH"], f))]
except Exception as e:
print(f"读取文件夹失败: {str(e)}")
return
if not files:
print("错误:文件夹为空或路径不存在!")
return
random.shuffle(files)
for file_path in files:
try:
random_time = get_random_time(target_date, config)
os.utime(file_path, (random_time.timestamp(), random_time.timestamp()))
if config["VERBOSE"]:
print(f"已更新文件: {os.path.basename(file_path)}")
print(f"新的修改时间: {random_time.strftime('%Y-%m-%d %H:%M:%S')}")
print("-" * 50)
except Exception as e:
print(f"更新文件时间失败: {file_path}")
print(f"错误信息: {str(e)}")
if __name__ == "__main__":
update_file_times()