Supprimer automatiquement les caractères non valides des noms de fichiers Windows

4

Je colle souvent des titres de PDF dans leurs noms de fichiers afin de pouvoir les rechercher facilement. Ils ont souvent des caractères non valides, tels que des nouvelles lignes ou :, et Windows affiche une erreur stupide, puis rétablit le nom de fichier d'origine.

entrez la description de l'image ici

Je me fous de ces personnages et je serais parfaitement heureux que les remplacent -ou les suppriment complètement. Y a-t-il un moyen de faire ça? Un paramètre système pour désactiver cette invite?

La meilleure chose à laquelle je puisse penser est un script AutoHotkey avec son propre raccourci clavier pour "coller le presse-papiers en supprimant d’abord les caractères non valides", ce que j’utilise actuellement.

endolithe
la source
@ Hello71: Qu'est-ce que cela signifie?
endolith

Réponses:

0

J'ai eu un problème similaire avec mes fichiers de musique. J'ai fini par écrire un programme Java pour tout renommer. J'ai eu de la chance car certaines bibliothèques de métadonnées mp3 ID3 étaient disponibles. Je ne sais pas s'il existe une bibliothèque gratuite pour lire les métadonnées PDF. Il y a une discussion à ce sujet ici .

Après de nombreuses recherches, j'ai trouvé cet outil ( A-PDF Rename ) qui prétend pouvoir renommer des fichiers PDF basés sur des métadonnées. Je n'en ai jamais vu ni entendu parler auparavant. Achetez et téléchargez à vos risques et périls.

James T
la source
0

Vous pouvez essayer un script AutoIT qui remplacerait les caractères non valides dans votre presse-papiers.

Je n'utilise pas AutoIT moi-même, je ne connais donc pas le langage de script, mais beaucoup de personnes semblent manipuler le contenu du presse-papiers à l'aide de ClipGet()& ClipPut(value). Je ne voyais pas un bon moyen de "surveiller" le presse-papiers, principalement des boucles qui dormaient 1 seconde entre chaque course.

Je pense que c'est ce que @ Hello71 veut dire. J'espère que cela vous dirigera dans la bonne direction.

Scott McClenning
la source
0

J'utilise ce raccourci clavier AutoHotkey , qui fonctionne correctement mais n'est pas "automatique":

;------------------------------------------------------------------------------
; Win+V: Paste as plain text from clipboard
;------------------------------------------------------------------------------
#v::
   Clip0 = %ClipBoardAll%
   ClipBoard = %ClipBoard% ; Convert to plain text
   Send ^v ; For best compatibility: SendPlay
   Sleep 50 ; Don't change clipboard while it is pasted! (Sleep > 0)
   ClipBoard = %Clip0% ; Restore original ClipBoard
   VarSetCapacity(Clip0, 0) ; Free memory
Return

;------------------------------------------------------------------------------
; Win+Alt+V: Paste plain text only, stripping characters unsafe for filenames
;------------------------------------------------------------------------------
#!v:: ; paste without formatting
  StringReplace, clipboardt, clipboard, `r`n, %A_Space%, All
  clipboardt := RegExReplace(clipboardt, "` {2,}", "` ")
  StringLeft, 1st, clipboardt, 1
  IfInString, 1st, %A_Space%
    StringTrimLeft, clipboardt, clipboardt, 1
  StringRIght, last, clipboardt, 1
  IfInString, last, %A_Space%
    StringTrimRight, clipboardt, clipboardt, 1
;Send {Raw}%clipboardt%

  Clip0 = %ClipBoardAll%
  ClipBoard = %clipboardt% ; Convert to plain text
  Send ^v ; For best compatibility: SendPlay
  Sleep 50 ; Don't change clipboard while it is pasted! (Sleep > 0)
  ClipBoard = %Clip0% ; Restore original ClipBoard
  VarSetCapacity(Clip0, 0) ; Free memory
  clipboardt =
return
endolithe
la source
0

J'active ce code ahk lorsque cela est nécessaire. Un Ctrl + Alt + Maj + G (ou ce que vous avez choisi) va automatiquement copier et remplacer les caractères interdits par un trait de soulignement (ou ce que vous voulez). (Vous n'avez pas vraiment besoin de bien le comprendre pour le personnaliser).

!^+g::                              ;  Alt(!) CTRL(^) shift(+) G ----------------  replace \? <>/\\\*""|: by _ 
clipboard =                        ; empty clipboard
Send, {CTRLDOWN}c{CTRLUP}{ESC}     ; send the ctrl C command to copy text in clipboard
ClipWait                           ; wait until there is something in clip bord
Removesign := RegExReplace(clipboard, "[\? <>/\\\*""|:]", "_")  ; run the regex on the clipboard content and save it in Removesign 
clipboard = %Removesign%           ; send Removesign to clipboard
ClipWait
return
JinSnow
la source