windows系统下利用python对指定文件夹下面的所有文件的创建时间进行修改

news2025/1/11 5:59:40

windows系统下利用python对指定文件夹下面的所有文件的创建时间进行修改

不知道其他的朋友们有没有这个需求哈,反正咱家是有这个需求
需求1、当前有大量的文件需要更改文件生成的时间,因为不可告知的原因,当前的文件创建时间是不能满足使用的
需求2、更改后的时间不能是一样的,不能被看出来是文件是一起保存的,也就是说看着像是每个文件单独报错的(创建时间不一致)
看需求只有一个是不是非常的简单,但是吧。利用python来实现起来也是非常简单的,如果不信的话,大家可以跟着小编的文章往下面看哈,简单易学,一学就会,相信小编也是相信自己哈

基础环境

主机版本python版本
win10系统python3.8.6

先来看看效果

一看效果大家就知道,小编的这个文章是实现的一个什么的功能了

小编这里只是修改了 分钟和秒的时间变得随机了,看着就不像是作假的拉,当然了,代码里面可以进行更改的,大家想更改那个时间可以更改那个时间,比如改年,月,日,时,都可以。小编这里只是提供了一个大概的思路而已,文章最后有完整的代码。

当前有这么的一个文件夹,下面有好多的好多的文件,当然了,小编这边是整理了几个测试专用的文件,文件不是很多,但是也是把各种格式的文件都是整理了一下
在这里插入图片描述
开始运行下代码:
在这里插入图片描述
查看文件创建时间修改结果:
在这里插入图片描述

人狠话不多,直接开始搞

先import我们需要的几个包

#!/usr/bin/env python
# -*- coding: utf-8 -*-


import random    ###产生随机数的,方便咱们文件的创建时间达到不一致的效果
import tkinter as tk       ###作用与UI界面的
import os    #####作用与当前的额winows系统的,比如文件的打开关闭,当前的路径等需要这个模块
###下面的两个就是用来修改时间用的,比较关键的
from win32file import CreateFile, SetFileTime, GetFileTime, CloseHandle
from win32file import GENERIC_READ, GENERIC_WRITE, OPEN_EXISTING
###下面的都是时间的模块,当然了可能有人说为什么使用这么多的模块,小编只是懒,怎么方便怎么用,大家可以研究下减少模块来实现
from pywintypes import Time      
import time
import datetime

创建UI操作窗口,看起来更逼真

小编的这个窗口还是比较简单的,大家可以根据自己的需要定制一个自己的窗口

root = tk.Tk()  # 创建窗口对象
root.title("指定目录下文件时间批量修改            -----文件辅助程序   v2.10     ")
root.geometry("550x300")
·
·
·
·
中间内容下面补充
·
·
·
·

# 显示当前进行的操作,以及提示
####会在窗口出现一个白板,来显示我们运行的结果
jg = tk.LabelFrame(root,text="当前进展展示",padx=5,pady=5)
jg.grid(row=0,columnspan=2,sticky='w',padx=10,pady=10)

text=tk.Text(jg,width=70,height=15)
scroll=tk.Scrollbar(jg)
scroll.grid(row=0,column=1)
text.grid(row=0,column=0)
scroll.config(command=text.yview)
text.config(yscrollcommand=scroll.set)


tk.Button(root, text="文件时间修改", width=25, command=Start).grid(row=1,columnspan=2,padx=10, pady=10)  # s南边也就是下边
###点击文件时间修改按钮,会出发Start这个函数,接下来我们就补充这个函数


root.mainloop()  # 进入消息循环

效果:
在这里插入图片描述

Start函数的编写

def Start():
    #获取当天日期
    TIME = datetime.datetime.now()
    """
    定义当前的时间并获取当前的时间
    :year     #当前年份,如果有自己的需求,这里可以进行更改,eg year=2023
    :month  ###当前月,如果有自己的需求,这里可以进行更改
    :day      ###当前天,如果有自己的需求,这里可以进行更改
    :hour   ####当前时,r如果有自己的需求,这里可以进行更改
    """
    year = int(TIME.strftime("%Y"))
    month = int(TIME.strftime("%m")) 
    day = int(TIME.strftime("%d")) 
    hour = int(TIME.strftime("%H"))  
    ####白板展示,可以写成一个函数,但是小编没写,总共用不了几下
    text.insert(tk.INSERT, '\n')
    text.insert(tk.INSERT, "当前时间已经生成。。。。。。。。")
    ####需要更改文件所在的目录
    path = "D:\\wenjian"     ###根据自己的实际位置进行更改
    ####白板展示
    text.insert(tk.INSERT, '\n')
    text.insert(tk.INSERT, "正在处理文件,请稍等。。。。。。。。")
    # findfile(path)
    ###批量更改文件时间
    """
    将year,month,day,hour,path传递给fileChangTime函数,执行具体的文件创建日期的修改
    """
    fileChansTime(year,month,day,hour,path)    

fileChansTime函数的编写

def fileChansTime(year,month,day,hour,path):
    ####循环path这个文件夹下面的所有文件
    file_list = os.listdir(path)
    for file_name in file_list:
        ###调用分钟和秒函数,来随机生成分钟和秒,并赋值
        minute = Minute()
        second = Second()

        ##修改文件创建时间
        o = str(year) +"-" + str(month) + "-" + str(day) +" " + str(hour) + ":" + str(minute) + ":" + str(second)
        ###小编这里将创建时间、修改时间和访问时间都设置成一样的拉,可以根据自己的需要设置成不一样
        cTime = o  # 创建时间
        mTime = o  # 修改时间
        aTime = o  # 访问时间
       

        offset = (0, 10, 30)  # 偏移的秒数
         # 拼接文件路径,文件存在才能成功(可以写绝对路径,也可以写相对路径,小编这里是绝对路径)
        A = path + "\\" + file_name
        # 调用modifyFileTime函数(文章下面有)修改文件创建时间,并判断是否修改成功
        r = modifyFileTime(A, cTime, mTime, aTime, offset)
        if r == 0:
            print('修改完成')
            text.insert(tk.INSERT, '\n')
            text.insert(tk.INSERT, file_name+"编辑时间的随机分钟和秒数已经更改成功")
        elif r == 1:
            text.insert(tk.INSERT, '\n')
            text.insert(tk.INSERT, file_name+"编辑时间的随机分钟和秒数更改失败,请手动更改")

分钟和秒的函数的编写

这里可以写成一个函数来达到效果,小编这里是写了两个,但是不影响效果
如果大家需要更改年,月,日,时的随机值的话,可以参照这个办法进行定义一下,并在Start函数中进行调用就行

##取分钟的随机数
def Minute():
    # 从1到60之间取一个随机数
    value = (random.uniform(1, 60))
    # .0代表后面的小数位为0个
    value = format(value, '.0f')
    return value

##取描述的随机值
def Second():
    # 从1到60之间取一个随机数
    value = (random.uniform(1, 60))
    # .0代表后面的小数位为0个
    value = format(value, '.0f')
    return value

modifyFileTime函数的编写

##修改文件日期
def modifyFileTime(filePath, createTime, modifyTime, accessTime, offset):
    """
    用来修改任意文件的相关时间属性,时间格式:YYYY-MM-DD HH:MM:SS 例如:2019-02-02 00:01:02
    :param filePath: 文件路径名
    :param createTime: 创建时间
    :param modifyTime: 修改时间
    :param accessTime: 访问时间
    :param offset: 时间偏移的秒数,tuple格式,顺序和参数时间对应
    """
    try:
        format = "%Y-%m-%d %H:%M:%S"  # 时间格式
        cTime_t = timeOffsetAndStruct(createTime, format, offset[0])
        mTime_t = timeOffsetAndStruct(modifyTime, format, offset[1])
        aTime_t = timeOffsetAndStruct(accessTime, format, offset[2])

        fh = CreateFile(filePath, GENERIC_READ | GENERIC_WRITE, 0, None, OPEN_EXISTING, 0, 0)
        createTimes, accessTimes, modifyTimes = GetFileTime(fh)

        createTimes = Time(time.mktime(cTime_t))
        accessTimes = Time(time.mktime(aTime_t))
        modifyTimes = Time(time.mktime(mTime_t))
        SetFileTime(fh, createTimes, accessTimes, modifyTimes)
        CloseHandle(fh)
        return 0
    except:
        return 1

def timeOffsetAndStruct(times, format, offset):
    return time.localtime(time.mktime(time.strptime(times, format)) + offset)

来看看整体的代码效果

#!/usr/bin/env python
# -*- coding: utf-8 -*-


import random
import tkinter as tk
import os
from win32file import CreateFile, SetFileTime, GetFileTime, CloseHandle
from win32file import GENERIC_READ, GENERIC_WRITE, OPEN_EXISTING
from pywintypes import Time
import time
import datetime


root = tk.Tk()  # 创建窗口对象
root.title("指定目录下文件时间批量修改            -----文件辅助程序   v2.10     ")
root.geometry("550x300")



##修改文件日期
def modifyFileTime(filePath, createTime, modifyTime, accessTime, offset):
    """
    用来修改任意文件的相关时间属性,时间格式:YYYY-MM-DD HH:MM:SS 例如:2019-02-02 00:01:02
    :param filePath: 文件路径名
    :param createTime: 创建时间
    :param modifyTime: 修改时间
    :param accessTime: 访问时间
    :param offset: 时间偏移的秒数,tuple格式,顺序和参数时间对应
    """
    try:
        format = "%Y-%m-%d %H:%M:%S"  # 时间格式
        cTime_t = timeOffsetAndStruct(createTime, format, offset[0])
        mTime_t = timeOffsetAndStruct(modifyTime, format, offset[1])
        aTime_t = timeOffsetAndStruct(accessTime, format, offset[2])

        fh = CreateFile(filePath, GENERIC_READ | GENERIC_WRITE, 0, None, OPEN_EXISTING, 0, 0)
        createTimes, accessTimes, modifyTimes = GetFileTime(fh)

        createTimes = Time(time.mktime(cTime_t))
        accessTimes = Time(time.mktime(aTime_t))
        modifyTimes = Time(time.mktime(mTime_t))
        SetFileTime(fh, createTimes, accessTimes, modifyTimes)
        CloseHandle(fh)
        return 0
    except:
        return 1

def timeOffsetAndStruct(times, format, offset):
    return time.localtime(time.mktime(time.strptime(times, format)) + offset)



##取分钟的随机数

def Minute():
    # 从1到60之间取一个随机数
    value = (random.uniform(1, 60))
    # .0代表后面的小数位为0个
    value = format(value, '.0f')
    return value

##取描述的随机值
def Second():
    # 从1到60之间取一个随机数
    value = (random.uniform(1, 60))
    # .0代表后面的小数位为0个
    value = format(value, '.0f')
    return value



def fileChansTime(year,month,day,hour,path):

    ####循环
    file_list = os.listdir(path)
    for file_name in file_list:
        print(file_name)
        
        minute = Minute()
        second = Second()

        ##修改文件创建时间
        o = str(year) +"-" + str(month) + "-" + str(day) +" " + str(hour) + ":" + str(minute) + ":" + str(second)
        cTime = o  # 创建时间
        mTime = o  # 修改时间
        aTime = o  # 访问时间
        # 文件路径,文件存在才能成功(可以写绝对路径,也可以写相对路径)

        offset = (0, 10, 30)  # 偏移的秒数
        A = path + "\\" + file_name
        print(A)

        # 调用函数修改文件创建时间,并判断是否修改成功
        r = modifyFileTime(A, cTime, mTime, aTime, offset)
        if r == 0:
            print('修改完成')
            text.insert(tk.INSERT, '\n')
            text.insert(tk.INSERT, file_name+"编辑时间的随机分钟和秒数已经更改成功")
        elif r == 1:
            text.insert(tk.INSERT, '\n')
            text.insert(tk.INSERT, file_name+"编辑时间的随机分钟和秒数更改失败,请手动更改")


def Start():
    #获取当天日期
    TIME = datetime.datetime.now()
    year = int(TIME.strftime("%Y"))    #当前年份
    month = int(TIME.strftime("%m"))  ###当前月
    day = int(TIME.strftime("%d"))   ###当前天
    hour = int(TIME.strftime("%H"))  ####当前时
    text.insert(tk.INSERT, '\n')
    text.insert(tk.INSERT, "当前时间已经生成。。。。。。。。")
    ####模板目录
    path = "D:\\wenjian"
    ####循环文件,并进行批量更改
    text.insert(tk.INSERT, '\n')
    text.insert(tk.INSERT, "正在处理文件,请稍等。。。。。。。。")
    # findfile(path)
    ###批量更改
    fileChansTime(year,month,day,hour,path)


# 显示当前进行的操作,以及提示
jg = tk.LabelFrame(root,text="当前进展展示",padx=5,pady=5)
jg.grid(row=0,columnspan=2,sticky='w',padx=10,pady=10)

text=tk.Text(jg,width=70,height=15)
scroll=tk.Scrollbar(jg)
scroll.grid(row=0,column=1)
text.grid(row=0,column=0)
scroll.config(command=text.yview)
text.config(yscrollcommand=scroll.set)


tk.Button(root, text="文件时间修改", width=25, command=Start).grid(row=1,columnspan=2,padx=10, pady=10)  # s南边也就是下边


root.mainloop()  # 进入消息循环

结束语

工作上终于不是那么忙了,以后有时间写自己的博客了,自己也是看到需要什么就写什么,希望可以帮助到大家,再次感谢大家的阅读,谢谢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1066111.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

现在玩51单片机,这也太LOW了?

作为一名科普的博主,今天我们来聊一聊51单片机。 一、什么是51单片机 单片机是一种微型计算机,广泛应用于各种电子产品和工业控制领域。51单片机是指基于Intel的8051微处理器为核心的单片机,是最为常见和广泛应用的单片机之一。 二、51单片机…

近视眼选择什么台灯好?分享医生都说好的台灯

如今全国近视人数已经超过6亿,差不多占据了我国人口的一半,而青少年的近视率更是位居世界第一!据数据显示,全国儿童青少年总体近视率高达53.6%,其中小学生为36.0%,初中生为71.6%,高中生为81.0%&…

微服务学习(十一):安装Git

微服务学习(十一):安装Git 1、下载Git 官网下载Git 2、将下载后的资源包上传到服务器 3、解压并安装 tar -zxvf git-2.42.0.tar.gz4、安装依赖 yum install zlib yum install zlib-devel5、执行操作命令 cd /home/git/git-2.42.0 ./co…

华为云CodeArts Check代码检查服务用户声音反馈集锦(8)

作者:gentle_zhou 原文链接:CodeArts Check代码检查服务用户声音反馈集锦(8)-云社区-华为云 CodeArts Check(原CodeCheck),是自主研发的代码检查服务。建立在华为30年自动化源代码静态检查技术…

张量-算术操作函数

tf.add(x,y,name None)求和函数 示例代码如下: import tensorflow.compat.v1 as tf tf.disable_v2_behavior()x 1 y 2a tf.add(x,y)with tf.Session() as sess:print(sess.run(a)) tf.subtract(x,y,name None)减法函数 示例代码如下: import tensorflow.compat.v1 as …

吐血整理,最全Pytest自动化测试框架快速上手(超详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 pytest框架 pyte…

前端【响应式图片处理】之 【picture标签】

目录 &#x1f31f;前言&#x1f31f;目前最常见的解决方案&#x1f31f;新的解决方案<picture>&#x1f31f;<picture>的工作原理&#x1f31f;<picture> 兼容性解决方案&#x1f31f;写在最后 &#x1f31f;前言 哈喽小伙伴们&#xff0c;前端开发过程中经…

<el-input> textarea文本域显示滚动条(超过高度就自动显示)

需求&#xff1a;首先是给定高度&#xff0c;输入文本框要自适应这个高度。文本超出高度就会显示滚动条否则不显示。 <el-row class"textarea-row"><el-col :span"3" class"first-row-title">天气</el-col><el-col :span&…

多目标优化两种算法:加权、智能优化算法

传统数学优化算法&#xff08;加权&#xff09; 使用数学优化算法解决多目标优化问题通常是将各个子目标聚合成一个带权重的单目标函数&#xff0c;系数由决策者决定&#xff0c;或者由优化方法自适应调整。即通过加权等方式将多目标问题转化为单目标问题进行求解。 这样每次只…

编程每日一练(多语言实现)基础篇:控制台打印九九乘法口诀表

文章目录 一、实例描述二、技术要点三、代码实现3.1 C 语言实现3.2 Python 语言实现3.3 Java 语言实现3.4 JavaScript 语言实现3.5 Go 语言实现 一、实例描述 本实例要求打印出乘法口诀表&#xff0c;在乘法口诀有行和列项的相乘得出的乘法结果。根据这个特点&#xff0c;使用…

Configuration of phpstudy and sqli-labs

Go download the app&#xff1a; 小皮面板(phpstudy) - 让天下没有难配的服务器环境&#xff01; (xp.cn) Have done. Then enter the program. Enable both functions&#xff1a; Apache and MySQL. Open the website&#xff1a; Next, Lets make the sqli-liab. GitHub…

Web server failed to start. Port 8080 was already in use

一、问题 package com.djc.boot;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annota…

几个G视频能压缩成几百MB吗?跟我学视频压缩

视频大小是可以压缩的&#xff0c;现在很多情况下&#xff0c;视频文件的大小都会限制我们的行动&#xff0c;例如需要将大量视频文件随身携带&#xff0c;或者在有限的网络带宽下传输视频文件。为了解决这些问题&#xff0c;下面给大家分享几个视频压缩的技巧&#xff0c;轻松…

6-8 求链表的倒数第m个元素 分数 15

ElementType Find(List L, int m) {int count 0;for (struct Node* cur L; cur ! NULL; cur cur->Next){count;}if (m > count) {return ERROR;}int n count - m 1;struct Node* cur L;while(--n)cur cur->Next;return cur->Data; }

鹿客携手小度、天翼数字生活等生态伙伴,开启全联接Opening计划

物联网、AI等新一代信息技术的飞速发展&#xff0c;各类家居家电智能水平与日俱增。作为智能家居入口级产品&#xff0c;智能门锁行业技术也在不断内卷&#xff0c;从密码解锁&#xff0c;到指纹识别、人脸识别、生物识别&#xff0c;不断升级。寻求更安全、更便捷、更智能的新…

Android之App跳转其他软件

文章目录 前言一、效果图二、实现步骤1.弹框xml(自己替换图标)2.弹框utils3.两个弹框动画4.封装方便调用5.调用6.长按事件方法7.跳转步骤8.复制utils 总结 前言 最近遇到一个需求&#xff0c;就是App内大面积需要长按复制并跳转指定App&#xff0c;没办法&#xff0c;只能埋头…

微信CRM系统:微商不可或缺的客户管理利器!

在这个竞争激烈的时代&#xff0c;微信客户已成为微商生存和发展的关键。如何更好地了解客户需求&#xff0c;提高客户满意度和忠诚度&#xff0c;已成为微商们亟待解决的问题。而解决这些问题&#xff0c;关键在于个微是否有一套完善的客户关系管理&#xff08;CRM&#xff09…

9.变换之平移

愿你出走半生,归来仍是少年 通过顶点着色器实现图形的整体平移。 1.知识点 1.1.齐次坐标 在GLSL 中Vec4进行坐标表达时&#xff0c;作为齐次坐标(x,y,z,w).当w1时&#xff0c;这个vec4可以表达一个点的三维坐标。在进行平移时&#xff0c;应保证偏移量的W为0。 1.2矢量相加运…

【Vue面试题三】、Vue中的v-show 和 v-if 怎么理解 ?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;v-show和v-if有什么区别…

Linux防火墙之--SNAT和DNAT

1.SNAT是什么 SNAT又称源地址转换。源地址转换是内网地址向外访问时&#xff0c;发起访问的内网ip地址转换为指定的ip地址&#xff08;可指定具体的服务以及相应的端口或端口范围&#xff09;&#xff0c;这可以使内网中使用保留ip地址的主机访问外部网络&#xff0c;即内网的多…