AutoIT-如何运行shell脚本

AutoIT-如何运行shell脚本,shell,applescript,autoit,Shell,Applescript,Autoit,我设法在applescript中运行低于shell的脚本代码,并正确生成输出。 Shell脚本。 do shell script "mdls 'UAT.pdf' | grep 'kMDItemPageWidth\\|kMDItemPageHeight' | awk '/ = / {for (i = 3; i <= NF; i++) printf \"%s \", $i/72; printf \"\\n\";}'" do shell script“mdls'UAT.pdf”| grep'k

我设法在applescript中运行低于shell的脚本代码,并正确生成输出。
Shell脚本。

do shell script "mdls 'UAT.pdf' | grep 'kMDItemPageWidth\\|kMDItemPageHeight' | awk '/ = / {for (i = 3; i <= NF; i++) printf \"%s \", $i/72; printf \"\\n\";}'"

do shell script“mdls'UAT.pdf”| grep'kMDItemPageWidth\\\| kMDItemPageHeight'| awk'/=/{for(i=3;i现在我们有进展了!@chinna_82,这是我的建议。意思是,这是我应该做的方式(我已经移植了几个脚本来AutoIt,并使用AutoIt构建了一个安装程序。它非常棒):

1) 其中最不可移植的部分是mdls命令,它仅适用于unix/OSX,没有Windows版本,但可能有Windows替代版本。稍后将详细介绍

2) grep和awk所做的就是解析mdls返回的输出。这可以通过多种方式完成,包括在AutoIt中进行编码。是的,如果我这样做,我可以找到grep和awk的Windows版本或替代品(例如,Windows grep和gawk),但他们做的事情相对简单,我可能只是在AutoIt中做的(为了学习AutoIt的语言,请参见)。可能不值得找到确切的Windows版本的grep和awk——只需使用AutoIt自己的语言即可

无论如何,mdls会获取所有pdf的元数据。它的文本如下:

kMDItemAuthors                 = (
    "Flint, Herbert L. (Herbert Longley), b. 1862"
)
kMDItemContentCreationDate     = 2013-10-16 16:07:51 -0700
kMDItemContentModificationDate = 2013-10-16 16:07:52 -0700
kMDItemContentType             = "com.adobe.pdf"
kMDItemContentTypeTree         = (
    "com.adobe.pdf",
    "public.data",
    "public.item",
    "public.composite-content",
    "public.content"
)
kMDItemCreator                 = "Digitized by the Internet Archive"
kMDItemDisplayName             = "practicalinstruc00flin.pdf"
kMDItemEncodingApplications    = (
    "Recoded by LuraDocument PDF v2.53"
)
kMDItemFSContentChangeDate     = 2013-10-16 16:07:52 -0700
kMDItemFSCreationDate          = 2013-10-16 16:07:51 -0700
kMDItemFSCreatorCode           = ""
kMDItemFSFinderFlags           = 0
kMDItemFSHasCustomIcon         = 0
kMDItemFSInvisible             = 0
kMDItemFSIsExtensionHidden     = 0
kMDItemFSIsStationery          = 0
kMDItemFSLabel                 = 0
kMDItemFSName                  = "practicalinstruc00flin.pdf"
kMDItemFSNodeCount             = 0
kMDItemFSOwnerGroupID          = 20
kMDItemFSOwnerUserID           = 501
kMDItemFSSize                  = 12668272
kMDItemFSTypeCode              = ""
kMDItemKeywords                = (
    "http://archive.org/details/practicalinstruc00flin"
)
kMDItemKind                    = "PDF"
kMDItemLastUsedDate            = 2013-10-30 20:00:54 -0700
kMDItemNumberOfPages           = 210
kMDItemPageHeight              = 532
kMDItemPageWidth               = 370
kMDItemSecurityMethod          = "None"
kMDItemTitle                   = "Practical instruction in hypnotism and suggestion"
kMDItemUsedDates               = (
    "2013-10-16 00:00:00 -0700",
    "2013-10-17 00:00:00 -0700",
    "2013-10-30 00:00:00 -0700"
)
kMDItemVersion                 = "1.5"
在OSX/Unix代码中,grep用于返回包含高度和宽度的行;awk进一步格式化并输出该输出的行。所有这些都可以在AppleScript或AutoIt中完成——您不需要grep和awk来完成。您只需要使用AutoIt的字符串函数,如


那么,如何返回初始元数据呢?也许这会起作用(可能还有其他的,但我现在需要赶时间):

对于哪个版本的Windows?您需要一个端口来AutoIt,这是一个很好的实用程序,但您尝试过什么吗?您必须使用与Windows等价的MDL(见下文),grep和awk,但默认情况下它们没有安装在Windows上(有grep和awk的Windows版本)…并且没有MDL…有一个用于Win的元数据实用程序,名为“Filever”",我不知道它能做多少。你想启动脚本吗?还是想在你的windows机器上Shellexecute程序?start和Shellexecute程序有什么区别?区别是:a)按上面的程序运行命令。使用do…b)将代码移植到windows/Autoit并运行。@chinna_82,你必须包括第三方实用程序的ude安装程序或AutoIt中的手动代码。如果您没有进行任何编码尝试,则要求为您完成代码,而这并不是真正正确的stackoverflow协议。不过,我很乐意为您提供参考资料。这就是我最初的评论的目的。