AutoHotKeys 中使用 ControlSend 发送文本的方法

Way to use ControlSend to send text in AutoHotKeys

我只是制作一个脚本,通过 Windows 中的命令提示符自动更新我的 GitHub 存储库。

不幸的是,命令提示符打开后的第一行代码不会发送。我相信这是因为字符串包含逗号,但我找不到使“pushd D:\Media Lists\Website、Blog 和 Wordpress_thefloodplains\thefloodshark.Github.io”发送为输入 {Enter} 之前的字符串,如下面的代码:

run cmd.exe
WinWait, ahk_exe cmd.exe ;

ControlSend, , pushd D:\Media Lists\Website, Blog, and Wordpress\_thefloodplains\thefloodshark.Github.io{Enter}, ahk_exe cmd.exe
sleep, 2000
ControlSend, , git add .{Enter}, ahk_exe cmd.exe
sleep, 2000
ControlSend, , git commit -m auto{Enter}, ahk_exe cmd.exe
sleep, 2000
ControlSend, , git push{Enter}, ahk_exe cmd.exe
sleep, 3000

Exit

就目前而言,脚本会运行,但它不会在第一行输入我的 GitHub 存储库位置。不过,其余的 ControlSend 输入工作。

我们将不胜感激任何想法。

问题确实是你的路径有逗号,而你没有转义它们 (`,)。
您可以在 AHK here.

中阅读有关转义的内容

但实际上,这只是指定遗留字符串时的一个问题。
相反,我想说的是你真正想做的只是 use the expression syntax and specify the string explicitly,像这样:

ControlSend, , % "pushd D:\Media Lists\Website, Blog, and Wordpress\_thefloodplains\thefloodshark.Github.io{Enter}", % "ahk_exe cmd.exe"
sleep, 2000
ControlSend, , % "git add .{Enter}", % "ahk_exe cmd.exe"
sleep, 2000
ControlSend, , % "git commit -m auto{Enter}", % "ahk_exe cmd.exe"
sleep, 2000
ControlSend, , % "git push{Enter}", % "ahk_exe cmd.exe"
sleep, 3000

现在换个更不相关的说明,这个实现确实是 bad/low 技术。
实际上,您只想为命令行和 运行 创建一个实际的脚本。由于您似乎在使用 cmd,因此您可以创建一个简单的 batch script,例如:

pushd D:\Media Lists\Website, Blog, and Wordpress\_thefloodplains\thefloodshark.Github.io
git add .
git commit -m auto
git push

然后 运行 它与 AHK 通过使用例如Run(docs):

Run, % "C:\Users\User\Desktop\my cool scripts\script.bat", % "C:\Users\User\Desktop\my cool project folder"