我希望能够通过Windows Powershell执行Adobe Illustrator ExtendScript。我相信这应该是有可能的,因为this answer描述了通过COM使用VB。
这是我的Powershell脚本:
string query = "SELECT Movie.Code FROM Movie WHERE Movie.Code = @code";
int i = 0;
i = int.Parse(query);
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.Connection = con;
con.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
string R1 = "OK";
if (sdr.Read())
{
if (i > 0)
{
Re1 = "OK";
}
else
{
Re1 = "Fail";
}
}
return Re1;
}
}
这是$illustratorRef = New-Object -ComObject Illustrator.Application
$conversionScript = New-Object -ComObject Scripting.FileSystemObject
$scriptFile = $conversionScript.OpenTextFile("C:\ws\ArtConversion\alert-test.jsx")
$fileContents = $scriptFile.ReadAll()
$scriptFile.Close()
$fileToRun = $fileContents + "main(arguments)"
$args = "line1", "line2"
$illustratorRef.DoJavaScript($fileToRun, $args, 1)
脚本:
alert-test.jsx
运行Powershell脚本会打开Illustrator,但是在遇到function main(argv) {
alert('message: ' + argv[0]);
return argv[0];
}
时会引发以下错误:
$illustratorRef.DoJavaScript
我正在使用Adobe Illustrator 2019 CC(64bit)和Powershell 5.1.16299.666
答案 0 :(得分:0)
我实现了我的目标,但是Powershell无法100%做到。
2017 Adobe Illustrator Scripting Guide包含第22页的以下语句:
在VBScript中,有几种创建Illustrator实例的方法。
但是,当提到JavaScript时,它说:
从JavaScript启动Illustrator的信息不在本指南的范围内。
我找不到有关如何使用VB以外的其他语言在Windows上以编程方式启动Illustrator的任何官方文档,因此我最终让我的Powershell脚本处理了目录遍历和日志记录的繁重工作,同时通过以下方式打开了Illustrator一个Visual Basic脚本。
从Powershell到VB的调用看起来像这样:
$convertFile = "cmd /C cscript .\run-illustrator-conversion.vbs $arg1, $arg2"
$output = Invoke-Expression $convertFile
VB脚本最终看起来像这样:
Dim appRef
Dim javaScriptFile
Dim argsArr()
Dim fsObj : Set fsObj = CreateObject("Scripting.FileSystemObject")
Dim jsxFile : Set jsxFile = fsObj.OpenTextFile(".\script-to-run.jsx", 1, False)
Dim fileContents : fileContents = jsxFile.ReadAll
jsxFile.Close
Set jsxFile = Nothing
Set fsObj = Nothing
javascriptFile = fileContents & "main(arguments);"
Set appRef = CreateObject("Illustrator.Application.CS5")
ReDim argsArr(Wscript.Arguments.length - 1)
For i = 0 To Wscript.Arguments.length - 1
argsArr(i) = Wscript.Arguments(i)
Next
Wscript.Echo appRef.DoJavaScript(javascriptFile, argsArr, 1)
注意:查看脚本指南以获取适用于您的Illustrator版本的正确字符串。