4

Я часто вставляю названия PDF-файлов в их имена, чтобы легко их искать. Они часто имеют недопустимые символы, такие как символы новой строки или : и Windows выдает глупую ошибку, а затем возвращает имя файла к исходному:

Меня не волнуют эти персонажи, и я был бы очень рад, если бы он заменил их - или удалил их полностью. Есть ли способ, которым я могу сделать это? Какие-либо системные настройки для отключения этого приглашения?

Лучшее, что я могу придумать, - это скрипт AutoHotkey с собственным сочетанием клавиш для «вставки буфера обмена, но сначала удалите недопустимые символы», что я сейчас и использую.

4 ответа4

0

Вы можете попробовать скрипт AutoIT , который заменит недопустимые символы в вашем буфере обмена.

Я сам не пользуюсь AutoIT, поэтому не знаю язык сценариев, но многие люди, похоже, манипулируют содержимым буфера обмена с помощью ClipGet() и ClipPut(value) . Я не видел хорошего способа "мониторинга" буфера обмена, в основном я видел петли, которые спали в течение 1 секунды между бегом.

Я думаю, это то, что означает @ Hello71. Надеюсь, что это указывает вам в правильном направлении.

0

У меня была похожая проблема с моими музыкальными файлами. В итоге я написал программу на Java, чтобы переименовать все. Мне повезло, так как было несколько бесплатных библиотек метаданных mp3 ID3. Я не уверен, есть ли бесплатная библиотека для чтения метаданных PDF. Существует дискуссия об этом здесь.

После долгих поисков я нашел этот инструмент (A-PDF Rename), который утверждает, что может переименовывать PDF-файлы на основе метаданных. Я никогда не видел и не слышал об этом раньше. Покупайте и скачивайте на свой страх и риск.

0

Я активирую этот код АХК, когда это необходимо для этой цели. Ctrl + Alt + Shift + G (или что вы выбрали) будет автоматически копировать и заменять запрещенные символы подчеркиванием (или что вы хотите). (Вам не нужно полностью понимать это, чтобы настроить его).

!^+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
0

Я использовал эту комбинацию клавиш AutoHotkey, которая работает нормально, но не "автоматически":

;------------------------------------------------------------------------------
; 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .