end*_*ith 7 windows-7 filenames
我经常将 PDF 的标题粘贴到文件名中,这样我就可以轻松搜索它们。它们通常包含无效字符,例如换行符或:
,Windows 会弹出一个愚蠢的错误,然后将文件名恢复为其原始值:
我不关心这些角色,如果用它们替换-
或完全删除它们,我会非常高兴。我有什么办法可以做到这一点吗?是否有系统设置可以禁用此提示?
我能想到的最好的方法是一个 AutoHotkey 脚本,它有自己的键盘快捷键,用于“粘贴剪贴板但先删除无效字符”,这就是我目前正在使用的。
我一直在使用这个 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
Run Code Online (Sandbox Code Playgroud)