这笔交易是这样的:
我使用http://www.clipmenu.com/ ClipMenu有20个状态的剪贴板,因为我需要复制分隔的某些txt文件的每一行。所以我打开txt文件,然后我遍历命令 + shift + →然后命令 +的每一行 c 然后↑等等,直到我到达顶部,我将所有行复制并存储在ClipMenu的历史记录中。
我的问题是,有没有办法制作一个以自动方式复制每一行的服务或脚本?我想我可以制作一个重复这些击键的脚本,直到它到达txt文件的顶部,但我不知道如何制作它。
非常感谢。
答案 0 :(得分:0)
我不知道如何使用Automator,但使用mono [MonoMac]非常简单:
using (System.IO.FileStream file = new System.IO.FileStream("path", System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read)) {
using (System.IO.StreamReader reader = new System.IO.StreamReader(file)) {
while (!reader.EndOfStream) {
String line = reader.ReadLine ();
System.Windows.Forms.Clipboard.SetText(line);
}
}
}
答案 1 :(得分:0)
尝试:
set fileText to read (choose file) as «class utf8»
set filePara to paragraphs of fileText
repeat with aPara in filePara
set aPara to contents of aPara
if aPara ≠ "" then set the clipboard to aPara
end repeat
答案 2 :(得分:0)
ClipMenu似乎忽略了“瞬态”剪贴板,因此您还需要在复制操作之间延迟:
read POSIX file "/Users/username/Documents/test.txt" as «class utf8»
repeat with p in reverse of paragraphs of result
if contents of p is not "" then set the clipboard to contents of p
delay 1
end repeat
或使用UI脚本:
delay 1
tell application "TextEdit"
activate
set n to number of paragraphs of document 1
end tell
tell application "System Events"
key code {125, 123} using command down
repeat n times
key code 124 using {shift down, command down}
keystroke "c" using command down
key code 126
delay 1
end repeat
end tell
密钥代码列在Events.h中。