2016-02-09 71 views
0

我正在運行Windows 10 Home Edition,過去幾天我一直在使用AutoHotkey v1.1.23.01。我有以下腳本:AutoHotkey:正斜槓作爲「q」並在CMD中反轉括號

:*:dmenv:: 
Input, machine,,{Enter} 
Send, FOR /f "tokens=*" `%i IN ('docker-machine env --shell=cmd %machine%') DO `%i 
return 

每次我從CMD的上下文中運行該腳本,我收到以下輸出:

FOR qf "tokens=*" %i IN)wdocker-machine env --shell=cmd asdw(DO %i 

正如你所看到的,正斜槓(/)已被替換爲q,括號已被逆轉,單引號(')已被替換爲w

任何人都可以告訴我可能會在這裏失蹤嗎? 我已經嘗試檢查其他程序(即記事本+ + +,資源管理器等),並且此腳本除CMD外無處不在。

我已經嘗試通過使用像AHK文檔建議的反引號轉義字符,並通過Notepad ++將.ahk文件轉換爲UTF-8。 另外,我嘗試過使用解決方法,如chr(47)Clipboard = code沒有任何運氣。

最後請注意:

我剛剛意識到,當我改變我的語言HEB,寫dmenv運行腳本,它的工作原理:FOR /f "tokens=*" %i IN ('docker-machine env --shell=cmd asdf') DO %i

這究竟是爲什麼?

回答

2

您的鍵盤佈局不是英語,但是cmd.exe是。

如果在運行send之前切換窗口的語言爲英語,它會工作(注意,切換語言可以通過AHK/DLL調用來完成)

可以,但是,使用以下解決方法來代替:(在Win10上測試)

:*:dmenv:: 
Input, machine,,{Enter} 
text = FOR /f "tokens=*" `%i IN ('docker-machine env --shell=cmd %machine%') DO `%i 
clp_bck := clipboardAll 
clipboard := text 
send ^v ; use ctrl v to send the text 
clipboard := clp_bck 
return 
+0

感謝您的快速響應,但CMD不粘貼剪貼板的內容。在用你的建議更新我的腳本後,在CMD中編寫'dmenv'只需輸出:'^ v' – spongeworthy

+0

@GSWV然後用'{ctrl v}'或者任何觸發粘貼命令的命令來代替'^ v'。 – 2501

+1

基於@ 2501的響應進行了一些搜索之後,我發現了以下適用於cmd的格式:'send^{vk56};用於解決cmd粘貼問題的密鑰ID。 – spongeworthy