如何将批量输出写入文本光标?

时间:2012-09-13 16:42:01

标签: keyboard-shortcuts command-prompt

在Windows 7中,最终我想绑定一个快捷键( CTRL + ALT + D )来吐出日期时间邮票“20120913 1232”。

我要挂断的步骤是让批处理文件向我的文本光标写入任何内容。目前我正在将它发送到clip.exe,然后我粘贴,但我想消除剪贴板的中间步骤。如果这是不可能的,那还有另一种解决方法吗?

echo %date:~-4%%date:~4,2%%date:~7,2% %time:~0,2%%time:~3,2% | clip

2 个答案:

答案 0 :(得分:0)

您不能从 cmd 执行此操作。您需要使用 VBS、Js 或 PowerShell。这是一个简单的 VBS 脚本,可以满足您的需求。只需在桌面上创建一个运行此 VBS 文件的快捷方式并为其分配一个快捷键

Set WshShell = WScript.CreateObject("WScript.Shell")
' Switch back to the previous window. Use Alt+Esc because Alt+Tab sometimes doesn't work
' WshShell.SendKeys "%{TAB}", True
WshShell.SendKeys "%{ESC}", True

' Get the time string
Dim dt, datetime_str
dt =  now
datetime_str = Year(dt) & Right("0" & Month(dt), 2) & Right("0" & Day(dt), 2)
datetime_str = datetime_str & " " & Right("0" & Hour(dt), 2) & Right("0" & Minute(dt), 2)

' Send the date string to the target window
WshShell.SendKeys datetime_str

然而,Autohotkey (AHK) 将是一个更好的解决方案并且工作得更快。这里有 2 个示例函数,它们将日期时间字符串输入到当前应用程序

; Map Ctrl+Alt+T to send the date string
^!t::
FormatTime, currentdate,, yyyyMMdd HHmm
SendInput %currentdate%
Return

; Map Ctrl+Alt+D to send the date string
^!D::
SendInput %A_YYYY%%A_MM%%A_DD% %A_Hour%%A_Min%
Return

将上述脚本另存为 *.ahk 并运行。 AHK 将在后台运行并监听按键序列以执行所需的操作

答案 1 :(得分:-1)

哇哇just just just and and and and!!!!! 作为我在这里发表的第一篇官方文章,它就像任何地方一样好......

OP /感兴趣的任何人:http://ahkscript.org

自动热键可能就是您所追求的。一个vanilla补充cmd .bat或一个独立的AHK脚本应该能够从STDOUT中提取数据并设置你的日期语法,并从1个脚本中设置所有热键。

这个问题的“热键”部分可能就是之前没有得到回答的原因,而不是可以在Windows CLI中完成的事情,你需要“快捷键重新映射软件”,这正是Auto Hotkey的设计目标:)

自从我研究Windows中的快捷键重映射以来,已经有很长一段时间了,但我确实记得AHK只是少数能够重新映射硬编码快捷键组合的程序,比如WinKey + R,除非你自己编写代码(用C ++编写)或类似的)

我还建议彻底挖掘Rob van der Woude的网站,特别是有关重定向的2篇文章:

http://www.robvanderwoude.com/battech_redirection.php

在底部是指向“重定向概述页面”的链接,这是重定向命令/语法的特别好的“备忘单”。

希望这可以帮助任何可能有好奇心的人