浅谈processing-java.exe应用程序的使用(与PowerShell的联合)
简单总结一下processing-java.exe的使用,以及和PowerShell结合,如何互相调用和传参。
Processing-java
这是 processing-java.exe 的官方说明:
Command line edition for Processing 1295 (Java Mode)
--help Show this help text. Congratulations.
--sketch=<name> Specify the sketch folder (required)
--output=<name> Specify the output folder (optional and
cannot be the same as the sketch folder.)
--force The sketch will not build if the output
folder already exists, because the contents
will be replaced. This option erases the
folder first. Use with extreme caution!
--build Preprocess and compile a sketch into .class files.
--run Preprocess, compile, and run a sketch.
--present Preprocess, compile, and run a sketch in presentation mode.
--export Export an application.
--variant Specify the platform and architecture (Export only).
--no-java Do not embed Java.
Starting with 4.0, the --platform option has been removed
because of the variety of platforms and architectures now available.
Use the --variant option instead, for instance:
variant platform
------------- ---------------------------
macos-x86_64 macOS (Intel 64-bit)
macos-aarch64 macOS (Apple Silicon)
windows-amd64 Windows (Intel 64-bit)
linux-amd64 Linux (Intel 64-bit)
linux-arm Linux (Raspberry Pi 32-bit)
linux-aarch64 Linux (Raspberry Pi 64-bit)
The --build, --run, --present, or --export must be the final parameter
passed to Processing. Arguments passed following one of those four will
be passed through to the sketch itself, and therefore available to the
sketch via the 'args' field. To pass options understood by PApplet.main(),
write a custom main() method so that the preprocessor does not add one.
https://github.com/processing/processing/wiki/Command-Line
把它翻译出来看一下
--platform选项已被移除, 因为现在可用的平台和架构种类繁多。 请改用 --variant 选项,例如:| 变体名称 | 平台 |
|---|---|
| macos-x86_64 | macOS(英特尔 64 位) |
| macos-aarch64 | macOS(苹果芯片) |
| windows-amd64 | Windows(英特尔 64 位) |
| linux-amd64 | Linux(英特尔 64 位) |
| linux-arm | Linux(树莓派 32 位) |
| linux-aarch64 | Linux(树莓派 64 位) |
--build、--run、--present 或 --export 必须是传递给 Processing 的最后一个参数。在这四个参数之一后面传递的参数将被传递给草图本身,
因此草图可以通过 “args” 字段获取这些参数。
要传递
PApplet.main () 所理解的选项,请编写一个自定义的 main () 方法,这样预处理器就不会添加默认的 main () 方法了。
processing-java 程序| 命令 (COMMAND) | 说明 (INFO) |
|---|---|
--help |
显示此帮助文本 :) |
--sketch=<path> |
指定草图文件夹(必需) |
--output=<path> |
指定输出文件夹(可选,且不能与草图文件夹相同) |
--force |
如果输出文件夹已存在,草图将不会构建,因为内容会被替换;此选项会先删除文件夹:使用时需极度谨慎! |
--build |
预处理并将草图编译为 .class 文件 |
--run |
预处理、编译并运行草图 |
--present |
预处理、编译并以演示模式运行草图 |
--export |
导出应用程序 |
--no-java |
不嵌入 Java:使用时需自担风险! |
--variant |
指定变体(仅用于导出应用程序),应为以下之一:macos-x86_64、macos-aarch64、windows-amd64、linux-amd64、linux-arm 或 linux-aarch64 |
--build、--run、--present 或 --export 命令必须是传递给 processing-java 的最后一个参数。 上述命令之后的参数将被传递给草图本身,因此可以通过草图中的 args 字段获取!(请参阅下面的示例) 要传递 PApplet.main() 能理解的选项,请编写一个自定义的 main() 方法,这样预处理器就不会添加一个。processing-java 的示例...processing-java --sketch=yoursketchfolder --run 注意:--sketch 命令是必需的,应该是你草图文件夹的路径processing-java --sketch=yoursketchfolder --output=youroutputfolder --run--force 命令,这将覆盖输出目录,即使其中已有内容(使用时需谨慎!):processing-java --sketch=/full/path/to/your/sketch/dir --output=/path/to/output/folder --force --runprocessing-java --sketch=/full/path/to/your/sketch/folder --present--run、--present 等命令之后添加它们。例如,这里我们将宽度和高度传递给一个草图:processing-java --sketch=/full/path/to/your/sketch/folder --present 600 600void settings() {
// 如果存在参数,则更改草图的大小
if (args != null) {
int w = Integer.parseInt(args[0]); // 将第一个参数解析为宽度
int h = Integer.parseInt(args[1]); // 将第二个参数解析为高度
size(w, h); // 根据参数设置草图的大小
}
// 如果没有参数或者参数不完整,这里可以提供一个选择 —— 此处我们手动设置尺寸 :)
else {
size(400, 400); // 设置默认大小为 400x400
}
}
--sketch 参数指定草图的完整路径,或者包含草图的文件夹名称与草图的名称不同。--build 和 --export 选项也应该可以正常工作。补充
一 Processing 调用 PowerShell 脚本
Runtime。getRuntime().exec 或 ProcessBuilder 调用 PowerShell 命令。例如:运行一个dir命令来获取C盘目录信息:
void setup() {
size(400, 400);
try {
// 执行 PowerShell 命令(例如列出目录)
Process p = Runtime.getRuntime().exec("powershell.exe dir C:\\");
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = input.readLine()) != null) {
println(line); // 在 Processing 控制台输出结果
}
input.close();
} catch (Exception e) {
e.printStackTrace();
}
}
也可以在 Processing 中动态构造 PowerShell 命令:
void setup() {
String folderPath = "C:\\Users\\YourName\\Documents";
try {
Process p = Runtime.getRuntime().exec("powershell.exe dir " + folderPath);
// 读取输出...
} catch (Exception e) {
// 处理异常
}
}
还可以传递参数给PowerShell脚本:
script.ps1,它接受参数并执行一些复杂的任务。你可以在 Processing 草图中调用该脚本并传递参数:void setup() {
String scriptPath = "C:\\path\\to\\script.ps1"; // PowerShell 脚本路径
String param1 = "value1";
String param2 = "value2";
try {
// 构造命令
String command = "powershell.exe -File " + scriptPath + " -param1 " + param1 + " -param2 " + param2;
Process process = Runtime.getRuntime().exec(command);
// 读取输出
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
println(line); // 打印输出到 Processing 控制台
}
} catch (Exception e) {
e.printStackTrace();
}
}
注意:代码中使用了InputStreamReader来读取PowerShell脚本反馈的信息。
二 PowerShell 脚本调用 Processing-java
直接运行 Processing 脚本
Processing-java.exe,并指定 .pde 文件所在的文件夹路径:# 示例:运行指定路径的 Processing 脚本
"C:\Processing\processing-java.exe" --sketch="C:\path\to\yoursketchfolder" --run
如果频繁调用Processing-java程序,可以设置一下系统变量,将 其目录地址添加入Path中。
传递命令行参数
# PowerShell 命令
"C:\Processing\processing-java.exe" --sketch="C:\path\to\yoursketchfolder" --run --args "参数1" "参数2"
然后在 Processing 代码中通过 args 数组接收参数:
void setup() {
size(400, 400);
background(255);
// 检查是否有参数传入
if (null == args) {
} else {
if (args.length > 0) {
for (int i = 0; i < args.length; i++) {
println("接收到的参数 " + (i + 1) + ": " + args[i]);
}
} else {
println("没有接收到任何参数。");
}
}
}
void draw() {
// 这里可以添加其他绘图代码
}
有待传入参数可以单独放在一个字符串数组中,方便定义和管理,如:
# 定义要传递的参数
$parameters = "参数1", "参数2", "参数3"
# 构建完整的命令
$command = "$processingJavaPath --sketch=$sketchPath --run --args $($parameters -join ' ')"
捕获 Processing 输出
$output = "C:\Processing\processing-java.exe" --sketch="C:\path\to\yoursketchfolder" --run 2>&1
$output | Out-File -FilePath "output.log"
- 捕获输出:
2>&1确保捕获命令运行时的所有输出,包括标准输出和错误信息,并存放进$output变量中。 - 保存日志:将输出的信息,也就是$output变量数据保存到日志文件
output.log中,方便查看命令运行的结果和潜在的错误信息。
如果情景简单,可以删除2>&1命令。
复杂情景 · 运行多个草图并导出应用
# 定义草图列表和输出路径
$sketches = @(
"D:\sketch\sk1",
"D:\sketch\sk2",
"D:\sketch\sk3"
)
$outputFolder = "D:\outputaa"
# 遍历每个草图并运行
foreach ($sketch in $sketches) {
$outputPath = Join-Path $outputFolder (Split-Path $sketch -Leaf)
New-Item -ItemType Directory -Path $outputPath -Force | Out-Null
# 运行草图并导出
processing-java --sketch=$sketch --output=$outputPath --force --export
}
Processing-java 中的 --output 参数允许你指定一个输出目录,用于存放草图的编译文件或导出文件。需要将构建或导出的文件组织到特定的文件夹结构中时非常有用。
--output 参数,你需要将其放在触发编译或导出的命令之前(如 --run、--export 或 --build)。以下是一个简单的示例:processing-java --sketch="C:\path\to\yoursketchfolder" --output="C:\desired\output\folder" --run
注意事项
--output指定的目录不能与草图目录相同。如果尝试使用相同的目录,Processing-java 会抛出错误。- 如果输出目录不存在,Processing-java 会在可能的情况下创建它。而在上述例子中,我手动创建了待输出目录,因此,需要加上--force让其忽略已存在的文件夹,强制输出文件,--force参数必须放在--export之前。
- 可以使用相对路径作为输出目录。
总结
通过结合使用 Processing-java 和 PowerShell,可以实现更强大的自动化部署和跨平台管理功能。当然,如果是针对数字媒体艺术的创作和展演,这种结合也必定会为创作和研发注入新的思路,也能更高效得创建项目和管理项目。
浅谈processing-java.exe应用程序的使用(与PowerShell的联合)的更多相关文章
- 20190608_浅谈go&java差异(三)
20190608_浅谈go&java差异(三) 转载请注明出处https://www.cnblogs.com/funnyzpc/p/10990703.html 第三节内容概览 多线程通讯(线程 ...
- AJPFX浅谈关于Java程序员缺乏面向对象的基本功的问题
为什么很多 Java 程序员会缺乏面向对象基本功?这得怪那些 Java 框架.现在 Java 的各种框架太发达.太傻瓜化了,导致很多程序员只需要按部就班.照着框架进行代码填空,基本已经丧失了 OOA ...
- 浅谈用java解析xml文档(四)
继续接上一文,这一阵子因为公司项目加紧,导致最后一个解析xml文档的方式,还没有总结,下面总结使用dom4J解析xml. DOM4J(Document Object Model for Java) 使 ...
- 浅谈用java解析xml文档(一)
关于xml本身的语法及使用的环境不多说了,网上有很多规则, 然对xml文档进行解析,一般分为四种解析方式,基于java官方文档的Dom 和Sax解析,还有就是基于 第三方jar包的 Jdom 和 Do ...
- 浅谈对java中锁的理解
在并发编程中,经常遇到多个线程访问同一个 共享资源 ,这时候作为开发者必须考虑如何维护数据一致性,在java中synchronized关键字被常用于维护数据一致性.synchronized机制是给共享 ...
- 浅谈对java中传参问题的理解
之前用的c/c++比较多,在c/c++中对于传参类型,无外乎就是传值.传引用.传指针这几种.但在java中,由于没有指针类型,其传参的方式也发生了相应的变化.在网上找了找,按我之前的理解,java中传 ...
- 浅谈在Java开发中的枚举的作用和用法
枚举(enum),是指一个经过排序的.被打包成一个单一实体的项列表.一个枚举的实例可以使用枚举项列表中任意单一项的值.枚举在各个语言当中都有着广泛的应用,通常用来表示诸如颜色.方式.类别.状态等等数目 ...
- 浅谈C++/JAVA/C#运行机制和执行效率
估计有很多同学都对C++/JAVA/C#这三大热门语言的运行机制和执行效率有或多或少的困惑,自己也有,但是经过前期的学习,了解了三者在这两方面的区别,就废话不说了,进入主题吧. 一.运 ...
- 浅谈月薪3万 iOS程序员 的职业规划与成长!(进阶篇)
前言: 干了这么多年的iOS,虽然接触了许多七七八八的东西.技术,但是感觉本身iOS却没有什么质的飞越,可能跟自己接触的项目深度有关,于是决定在学习其他技术的同时,加强自己在iOS方面的学习,提高自己 ...
- 浅谈:java泛型与dao重用
在进入今天的主题之前,我们先理解一下什么是泛型: 泛型是java中一种类型,泛型是被参数化的类型. 类型-->class 参数化-->class类型可以是任意参数 泛型存在的意义:泛型可以 ...
随机推荐
- 04. PART 2 IdentityServer4 ASP.NET Core Identity .NET Core 3.1
04. PART 2 IdentityServer4 ASP.NET Core Identity .NET Core 3.1 如果您已经来到这里,那么祝贺你的坚持,最难的部分已经完成了.我们仅仅需要的 ...
- CompilerGenerated与GeneratedCode区别
前言 最近在捣鼓代码生成器,基于 Roslyn,我们可以让生成器项目生成我们的目标 C# 代码,这个也是MVVM Toolkit的实现方式,在查看生成代码的过程中,我们经常会遇到一些特殊的特性,如 G ...
- Spring AOP实例操作 简单易懂
AOP的功能,不改变源代码可以增强类中的方法 (增强 = 代理) AOP切入点表达式: execution([权限修饰符] [返回值类型] [类全路径] [方法名称] ([参数列表])) 例 ...
- 总结几个Qt版本的冷知识
Qt4.8.7是Qt4的终结版本,是Qt4系列版本中最稳定最经典的(很多嵌入式板子还是用Qt4.8),其实该版本是和Qt5.5差不多时间发布的.参考链接 https://www.qt.io/blog/ ...
- Qt编写可视化大屏电子看板系统19-横向柱状图
一.前言 横向柱状图的绘制这玩意当初还着实花费了一些时间,因为从v1版本开始,默认XY坐标轴是没有交换位置的处理的,也只有垂直的柱状图,要想换成横向的柱状图必须是自己拿到数据重新绘制,数据值的设置一般 ...
- matlab中mat文件的生成和读取
1.mat文件的生成 (1)直接在Matlab中创建并保存矩阵数据 打开Matlab软件,点击左上角文件(File),然后点击新建(new),选择变量(Variable),就新建了一个mat文件. 点 ...
- 推荐 5 个 火火火火 的CMS开源.Net项目
下面推荐5个基于.NetCore开发的CMS开源项目. 一.OrchardCore 基于ASP.NET Core 构建的.模块化和多租户应用程序框架,采用文档数据库,非常高性能,跨平台的系统. 1.跨 ...
- Docker Inspect 模板
Docker 使用Go 模板,您可以使用它来操作某些命令和日志驱动程序的输出格式. Docker 提供了一组基本函数来操作模板元素.所有这些示例都使用该docker inspect命令,但许多其他 C ...
- 【译】在分析器中使用 Meter Histogram(直方图)解锁见解
您是否正在与应用程序中的性能瓶颈作斗争?不要再观望了!Visual Studio 2022 在其性能分析套件中引入了 Meter Histogram(直方图)功能,为您提供了前所未有的分析和可视化直方 ...
- 了解 ASP.NET Core 中的中间件
在 .NET Core 中,中间件(Middleware) 是处理 HTTP 请求和响应的核心组件.它们被组织成一个请求处理管道,每个中间件都可以在请求到达最终处理程序之前或之后执行操作.中间件可以用 ...