Notepad ++ nouveaux noms de fichiers


2

Existe-t-il un moyen de faire en sorte que Notepad ++ génère de nouveaux noms de fichier avec la date actuelle?

Comme ça: YYYY_MM_DD_new1.txt ou similaire. Actuellement, il les nomme simplement: new1, new2, etc.

La date dans le nom du fichier fonctionnera parfaitement avec la sauvegarde automatique, il n’y aura pas de conflits de noms après le redémarrage de NPP.

Tout ce que je veux, c'est un moyen de stocker les sessions entre les redémarrages. Je veux enregistrer automatiquement même les fichiers non nommés.

Merci.


Est-ce à utiliser avec le plugin AutoSave ou quelque chose de similaire?
Joshua Nurczyk

sublimetext sauve des sessions
Raystafarian

Oui, à utiliser avec la sauvegarde automatique. Sublimetext ne m'intéresse pas, merci. Notepad ++ enregistre également les sessions, mais n'attribue pas de noms de fichiers uniques.
vt.

Réponses:


3

Je viens de faire cela en utilisant le plugin Python Script pour NPP ...

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])

Avec le code ci-dessus, dès que je tape Ctrl + N , le nouveau fichier est créé et enregistré instantanément avec le nom formaté comme défini dans 'fmt' ci-dessus. Le chemin du fichier à sauvegarder est également défini ci-dessus; changez-le en fonction de votre environnement.


À partir de la version 6.7.9.2 de NPP, le devis simple pour le «nouveau 1» dans le test «si» échoue, mais il remplace le devis simple par une fonctionnalité restaurée.
mwoliver

Génial. J'ai modifié la condition en: notepad.getBufferFilename (args ["bufferID"]) [0: 4] == 'new': et le nom du fichier: newFilename = ('% s \\% s.txt'% (os.environ [' TEMP '], d_string)) Mettez également ceci dans startup.py
vt.

1

Notepad ++ a un plugin Autosave2 qui enregistre vos documents avec un horodatage dans le nom du fichier, comme ceci:

ToDo.txt.2013-04-19 10.13.09

ToDo.txt.2013-04-19 10.14.09

ToDo.txt.2013-04-19 10.15.09


De la page Autosave2: Les paramètres ci-dessus créeront un nouveau fichier de sauvegarde pour "ToDo.txt" dans D: \ NPP_ \ Backups comme suit (si le texte a changé dans la minute): ToDo.txt.2013-04-19 10.13. 09 ToDo.txt.2013-04-19 10.14.09 ToDo.txt.2013-04-19 10.15.09. Je ne veux cependant pas de copies supplémentaires du fichier, mais le fichier lui-même doit avoir un nom unique.
vt.

aah, mon mauvais. Mais vos exigences semblent spécifiques, je suppose que vous devrez faire appel à quelqu'un pour créer un plugin qui le fera pour vous.
Shekhar

1
Je l'ai créé. Je n'ai même pas pensé à ça à l'origine.
vt.

1
hé bon travail, je pense que vous devriez publier un lien vers votre plugin ici et le marquer comme asnwer
Shekhar

0

J'ai essayé d'utiliser la réponse de mwoliver et j'ai toujours eu du mal à l'exécuter. J'ai apporté quelques modifications et maintenant, cela fonctionnera pour tout "nouveau #" format au lieu de "nouveau 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])

J'ai également ajouté l'extrait de code suivant à la fin du fichier startup.py (après le code ci-dessus) afin d'empêcher le "nouveau 1" au démarrage de Notepad ++.

if notepad.getCurrentFilename() == 'new 1':
    notepad.new()
    notepad.activateIndex(0,0)
    if notepad.getCurrentFilename() == 'new 1':
        notepad.close()
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.