有没有办法让 Notepad++ 使用当前日期生成新文件名?
像这样:YYYY_MM_DD_new1.txt 或类似内容。目前它只是命名它们:new1、new2 等。
文件名中的日期与自动保存配合得很好,NPP 重启后不会出现名称冲突。
我想要的只是一种在重启之间存储会话的方法。我希望自动保存甚至未命名的文件。
谢谢。
答案1
我刚刚使用 NPP 的 Python 脚本插件完成了此操作......
notepad.clearCallbacks([NOTIFICATION.BUFFERACTIVATED])
def my_callback(args):
if notepad.getBufferFilename(args["bufferID"]) == "new 1":
fmt = '%Y%m%d%H%M%S'
d = datetime.datetime.now()
d_string = d.strftime(fmt)
notepad.saveAs('X:\\Documents\\Notepad++_autosave\\%s.txt' % d_string)
notepad.callback(my_callback, [NOTIFICATION.BUFFERACTIVATED])
使用上述代码,只要我输入Ctrl+ N,就会立即创建新文件并保存,其名称的格式与上面 'fmt' 中定义的格式一致。要保存的文件的路径也在上面定义;请根据你的环境进行更改。
答案2
Notepad++ 有一个插件自动保存2它会在文件名中添加时间戳来保存您的文档,如下所示:
待办事项.txt.2013-04-19 10.13.09
待办事项.txt.2013-04-19 10.14.09
待办事项.txt.2013-04-19 10.15.09
答案3
我尝试使用 mwoliver 的答案,但仍然无法运行。我做了一些更改,现在它可以适用于任何“new #”格式,而不仅仅是“new 1”。
notepad.clearCallbacks([NOTIFICATION.BUFFERACTIVATED])
def my_callback(args):
set1 = set(notepad.getBufferFilename(args["bufferID"]).split(' '))
filenew = set1.pop()
filenumber = set1.pop().isdigit()
setempty = len(set1) == 0
if filenew == "new" and filenumber and setempty:
fmtdate = '%Y-%m-%d'
fmttime = '%H%M%S'
d = datetime.datetime.now()
d_string = d.strftime(fmtdate) + ' Notes ' + d.strftime(fmttime)
notepad.saveAs('C:\\Users\\username\\Desktop\\%s.txt' % d_string)
notepad.callback(my_callback, [NOTIFICATION.BUFFERACTIVATED])
我还将以下代码片段添加到 startup.py 文件的末尾(上面的代码之后),以防止在 notepad++ 启动时出现“new 1”。
if notepad.getCurrentFilename() == 'new 1':
notepad.new()
notepad.activateIndex(0,0)
if notepad.getCurrentFilename() == 'new 1':
notepad.close()