在Windows XP上,是否有快捷键可以将剪贴板的内容粘贴到命令提示符窗口中(而不是使用鼠标右键)?

典型的Shift+Insert在这里似乎不起作用。


当前回答

这不是一个真正的快捷方式,但只是一个快速访问控制菜单:Alt-space E P

如果你可以使用你的鼠标,右键单击cmd窗口作为粘贴时,我尝试了它。

其他回答

我个人使用一个小的AutoHotkey脚本来重新映射某些键盘功能,对于我使用的控制台窗口(CMD):

; Redefine only when the active window is a console window 
#IfWinActive ahk_class ConsoleWindowClass

; Close Command Window with Ctrl+w
$^w::
WinGetTitle sTitle
If (InStr(sTitle, "-")=0) { 
    Send EXIT{Enter}
} else {
    Send ^w
}

return 


; Ctrl+up / Down to scroll command window back and forward
^Up::
Send {WheelUp}
return

^Down::
Send {WheelDown}
return


; Paste in command window
^V::
; Spanish menu (Editar->Pegar, I suppose English version is the same, Edit->Paste)
Send !{Space}ep
return

#IfWinActive 

我花了一点时间来弄清楚为什么你的AutoHotkey脚本不适合我:

; Use backslash instead of backtick (yes, I am a C++ programmer).
#EscapeChar \

; Paste in command window.
^V::
StringReplace clipboard2, clipboard, \r\n, \n, All
SendInput {Raw}%clipboard2%
return

事实上,它依赖于击键,因此也依赖于键盘布局! 所以当你像我一样不幸只有AZERTY键盘时,你的建议就行不通了。更糟糕的是,我发现没有简单的方法来替换SendInput方法或扭曲它的环境来修复这个问题。例如SendInput "1"不发送数字1。

我必须把每个字符都转换成统一码,才能在我的电脑上使用:

#EscapeChar \

; Paste in command window.
^V::
StringReplace clipboard2, clipboard, \r\n, \n, All
clipboard3 := ""
Loop {
    if (a_index>strlen(clipboard2))
     break 
    char_asc := Asc(SubStr(clipboard2, a_Index, 1))   
    if (char_asc > 127 and char_asc < 256)
     add_zero := "0"
    else
     add_zero := "" 
    clipboard3 :=  clipboard3  . "{Asc " .  add_zero . char_asc . "}"
}
SendInput %clipboard3%
return

不是很简单……

谢谢,巴勃罗,为参考AutoHotkey实用程序。 因为我已经安装了Launchy,它使用Alt+Space,我必须修改它,但添加Shift键如下所示:

; Paste in command window
^V::
; Spanish menu (Editar->Pegar, I suppose English version is the same, Edit->Paste)
Send !+{Space}ep
return

你可以尝试使用Texter并创建一些不太可能的东西,如:

./p,由空格触发并将文本替换为%c

我刚刚测试了一下,它工作得很好。唯一的问题是使用一个罕见的序列,因为Texter不能限制这只是cmd。

可能还有其他类似的工具可以工作,甚至AutoHotKey,在此基础上构建的Texter可以做得更好,但Texter很容易:-)

还有一个很棒的开源工具叫做clink,它扩展了cmd的许多特性。其中之一就是能够使用ctrl+v插入文本。