cmd在粘贴时将em破折号转换为连字符。有解决办法吗?
我希望能够将文件路径粘贴到cmd中,其中包含em破折号(-,alt 0151) cmd将它们转换为em破折号已被连字符替换的破折号 手动输入:cmd在粘贴时将em破折号转换为连字符。有解决办法吗?,cmd,special-characters,Cmd,Special Characters,我希望能够将文件路径粘贴到cmd中,其中包含em破折号(-,alt 0151) cmd将它们转换为em破折号已被连字符替换的破折号 手动输入: (键盘)D:\-\image.png (cmd)D:\-\image.png 输入此选项将按预期打开文件 粘贴的输入: (剪贴板)D:\-\image.png (cmd)D:\-\image.png 输入此项会给我一个错误,因为名为hyphen的目录不存在 这是令人困惑的,因为文件系统支持路径具有这样的字符-如果我手动键入路径,我可以访问此文件,
D:\-\image.png
D:\-\image.png
D:\-\image.png
D:\-\image.png
类似于:
更改代码页没有任何区别。我的解决方法是创建一个自动热键脚本来解析粘贴的路径,并在遇到em破折号时发送alt 0151 它可能会更快,但它可以工作——这比接收错误要好几英里
#SingleInstance, force
numpad7::
tooltip, exited!
Clipboard := stored
sleep, 300
exitapp
#IfWinActive ahk_exe cmd.exe
$^v::
cliptext := clipboard
stored := ClipboardAll
StringGetPos, garbage, cliptext, —
garbage =
if !ErrorLevel {
Loop, Parse, cliptext
{
char = %A_LoopField%
If (char == "—") {
clipboard := sentence
sendinput, ^v
SendInput {alt down}{numpad0}{numpad1}{numpad5}{numpad1}{alt up}
sentence := ""
} else if (char == "") {
char := " "
gosub define_sentence
} else {
gosub define_sentence
}
}
; send sentence when EOL
gosub define_sentence
Clipboard := sentence := SubStr(sentence, 1, -1)
sendinput, ^v
sleep 200
Clipboard := stored
stored =
sentence =
return
} else {
sendinput, ^v
}
return
define_sentence:
sentence := sentence . char
tool := "s= " . sentence . "`n" . "c= " . char
tooltip, %tool%
return
另一方面,autohotkey的highlight.js似乎不起作用,这很好。好吧,这样的字符似乎不完全受支持…
cmd
对UTF-8一无所知,例如,UTF-8是当今常用的文本编码;它以某种方式支持UTF-16,但它总是乱七八糟的代码页等等。这就是为什么我通常在文件路径/名称中避免使用此类字符,并坚持使用ASCII字符集…