我是编码的新手所以请耐心等待。
我用Automator(OSX)创建了一个工作流程,工作正常。我唯一的问题是我希望它在许多输入上运行(即作为批处理)。我已经插入了Loop动作,但我遇到的问题是每次更改初始输入。
我想使用applescript每次都自动插入初始输入。
我有一个带URL的TXT文件。使用Apple脚本,我想将URL(或一行文本)复制到剪贴板。 在下一次迭代中,我想复制下一个URL(或文本行)。
有人可以帮忙吗?
谢谢!
答案 0 :(得分:6)
您可以创建一个循环工作流程(称为 LinesToClipboard.workflow )
工作流程:
Get Value of Variable
(LineNumber)Run Shell Script
/bin/bash
Pass input
更改为as arguments
/etc/passwd
更改为文件名的完整路径,例如/Users/myname/Documents/myfile.txt
linenum=${1:-0}
filename="/etc/passwd" # full path of your text-filename
let linenum++
sed -n "${linenum}p" < "$filename" | pbcopy
echo $linenum
Set Value of Variable
(LineNumber)Run Workflow
- 添加您当前的工作流程(或“ShowClipboard.workflow” - 请参见下文)
Wait for workflow to finish
Loop
Run Shell Script
(忽略此操作的输入),内容一行:echo 0
(当循环结束时,这会将变量LineNumber重置为零)Set Value of Variable
(LineNumber)为了进行测试,您可以使用内容创建另一个名为 ShowClipboard.workflow 的工作流程:
Get Contents of Cliboard
Set Value of Variable
(clipval)Ask for confirmation
(并将(clipval)
拖到消息字段中)运行第一个工作流程。
截图(肯定):)
第二个工作流程(用于测试)
答案 1 :(得分:0)
您不需要AppleScript来获取URL,但可以使用shell任务直接使用Automator提取这些URL。使用获取文件夹内容的任务(这是Automator中的Finder任务)后,添加shell任务作为下一个任务。确保选择将输入作为参数发送,而不是将其发送到stdin。完成后,您只需要以下shell脚本之一。
cat $@ | egrep -io '\S?(http|https|ftp|afp|smb|mailto|webcal):\S+''
它首先使用cat读取所有文件。 $@
是一个shell变量,包含上一个任务收集的参数:批处理文件夹的所有文件的路径列表。我们将它们传输到egrep将只输出由其方案过滤的URL。如果你想支持任何计划(官方和非官方计划):
cat $@ | egrep -io '\S?[A-Z][A-Z0-9+-.]+:\S+'