Remove automaticamente caracteres inválidos dos nomes de arquivos do Windows

4

Costumo colar títulos de PDFs em seus nomes de arquivos para que eu possa pesquisá-los facilmente. Eles geralmente têm caracteres inválidos, como novas linhas ou : , e o Windows exibe um erro estúpido e, em seguida, reverte o nome do arquivo para o original:

Eunãomeimportocomessespersonagenseficariaperfeitamentefelizseossubstituíssepor-ouosremovessecompletamente.Existealgumamaneiradefazerisso?Qualquerconfiguraçãodosistemaparadesativaresteprompt?

OmelhorquepossopensaréumscriptAutoHotkeycomseupróprioatalhodetecladopara"colar a área de transferência, mas remover os caracteres inválidos primeiro", que é o que estou usando no momento.

    
por endolith 30.10.2011 / 01:01

4 respostas

0

Eu tive um problema semelhante com meus arquivos de música. Acabei escrevendo um programa em Java para renomear tudo. Tive sorte, pois havia algumas bibliotecas de metadados ID3 mp3 gratuitas disponíveis. Não tenho certeza se há uma biblioteca gratuita disponível para ler os metadados em PDF. Há uma discussão sobre isso aqui .

Depois de muita pesquisa, encontrei essa ferramenta ( A-PDF Rename ) que afirma ser capaz de renomear arquivos PDF com base em metadados. Eu nunca vi ou ouvi falar disso antes. Compre e faça o download por sua conta e risco.

    
por 27.12.2011 / 10:59
0

Você pode tentar um script AutoIT que substitua os caracteres inválidos em sua área de transferência.

Eu mesmo não uso o AutoIT, por isso não conheço a linguagem de script, mas muitas pessoas parecem estar manipulando o conteúdo da área de transferência usando ClipGet() & %código%. Eu não vi uma boa maneira de "monitorar" a área de transferência, principalmente eu vi loops que dormiam por 1 segundo entre a execução.

Eu acho que isso é o que @ Hello71 significa. Espero que você esteja na direção certa.

    
por 02.01.2012 / 22:48
0

Estou usando este atalho de teclado do AutoHotkey , que funciona bem, mas não é "automático":

;------------------------------------------------------------------------------
; 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
    
por 26.03.2012 / 18:14
0

Eu ativo este código ahk quando necessário para esse propósito. Um ctrl + alt + shift + g (ou o que você escolher) irá automaticamente copiar e substituir os caracteres proibidos por sublinhado (ou o que você quiser). (Você realmente não precisa entender completamente para personalizá-lo).

!^+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
    
por 17.03.2016 / 07:47