换电脑之 hexo 博客重生记

最后更新:
阅读次数:

最近换了台二手电脑,不过用起来的确比我原来的电脑好用,8 GB 内存玩爆 n 个标签页的 Chrome 浏览器。

废话少说,新电脑上重装了系统后,一一安装了之前电脑上的那些软件,一切看起来都不错,唯独自己本地博客的源文件出问题了。

因为 hexo g -d 后,你会发现博客页面上显示的文章的发表日期都是重装系统那天的日期(我这里为 2017-6-6),这是因为重装系统后,你博客的文件移来移去后,会在新的系统上形成新的文件创建日期,但是最后修改日期并没有变,所以现在 需要把博客文章的源文件(markdown 文件)的文件创建时间都重新设置为原来的日期。

哈,看着挺简单,实际操作起来还真不那么容易。

  • 首先,先在网页上打开寄存你博客静态文件的 GitHub 仓库
  • 然后,找到在 commit 上找到文章发表日期都正确的那个 commit
  • 打开这个 commit,然后将这个 commit 仓库下的 sitemap.xml 文件下载下
    • sitemap.xml 储存的文章链接里包含了文章最初的发表日期
  • 下载完成后,我们需要把这个文件里的 文章发表日期文章名 提取出来(至于怎么提取,关键字:正则表达式、nodejs 读文件)
  • 提取出来后,我们就需要更改文件的创建日期了

在这就卡住了,网上找了半天,终于找到个方法,用 python 来修改。

How do I change the file creation date of a Windows file from Python?

  • Install pywin32 extension first(先安装 python 对接 win32 的一个扩展)

然后通过下面的代码就可以修改文件的创建日期了。

import win32file
import pywintypes

# main logic function
def changeFileCreateTime(path, ctime):
# path: your file path
# ctime: Unix timestamp

# open file and get the handle of file
# API: http://timgolden.me.uk/pywin32-docs/win32file__CreateFile_meth.html
handle = win32file.CreateFile(
path, # file path
win32file.GENERIC_WRITE, # must opened with GENERIC_WRITE access
0,
None,
win32file.OPEN_EXISTING,
0,
0
)

# create a PyTime object
# API: http://timgolden.me.uk/pywin32-docs/pywintypes__Time_meth.html
PyTime = pywintypes.Time(ctime)

# reset the create time of file
# API: http://timgolden.me.uk/pywin32-docs/win32file__SetFileTime_meth.html
win32file.SetFileTime(
handle,
PyTime
)

# example
changeFileCreateTime('C:/Users/percy/Desktop/1.txt',1234567789)

我们要做的是批量修改,所以需要再加几个循环就行了,具体就不细讲了,仅提供修改思路。