可能略微超过下班时间(卷王版本)
python
复制代码
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, # 向前推几天(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()
不会超过下班时间(窝囊费版本)
python
复制代码
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, # 向前推几天(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()