浅谈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类型可以是任意参数 泛型存在的意义:泛型可以 ...
随机推荐
- Dapr-4: 交通管制示例应用
第 4 章 交通管制示例应用 Introduction to the Traffic Control sample application | Microsoft Docs 在前面的章节种,你已经学习 ...
- 中电金信:基于AI的智能化国内信用证结算系统
2023年<商业银行资本管理办法>正式稿中,明确规定了国内信用证的信用转换系数:与贸易直接相关的短期或有项目,其信用转换系数为20%:而基于服务贸易的国内信用证,其系数为50%. 这一 ...
- NoSQL 述评
作为主库的 nosql 只有 CockroachDB.TiKV 以及 MongoDB(从4.0后事务似乎可用了),CockrouchDB 已经收费,另外 YugabyteDB 也可选,但大家的反馈都不 ...
- 【Python】2023年Python期末复习题
Python百分百挂科指南 出题人,出的题,水平不咋样,给出的参考答案一堆错误,给出的正确选项单词都能拼错. 非本次考试人员不必看,没有参考价值 选择题 下列哪个标识符是不合法的()D A. Name ...
- 【人工智能】【Python】Anacond基础操作
# 001.在 Anaconda 中使用 Conda 管理 Python 环境 工具:Anaconda Prompt(Anaconda)| 请使用管理员权限运行 更新Anaconda conda up ...
- 测试覆盖率 Java 覆盖率 Jacoco 插桩的不同形式总结和踩坑记录
https://testerhome.com/topics/20632 关于Jacoco的小结和踩坑记录 一.概述 测试覆盖率,老生常谈的话题.因为我测试理论基础不是很好,就不提什么需求覆盖率啦这样那 ...
- Qt音视频开发06-海康sdk内核linux客户端
一.前言 海康sdk的示例在官方是提供了的,但是无论UI还是交互简直是宇宙无敌的垃圾,猜测应该是初学者编写的,估计练手用的,所以老早就想把这个linux支持集成到自己的示例中,既然已经支持了windo ...
- Qt编写安防视频监控系统46-视频存储
一.前言 在整个视频监控系统的开发迭代升级过程中,遇到过各种奇奇怪怪的需求,都是客户提出来的,有些需求很合理,有些就不那么的自然了,牢记这客户是上帝的原则,能满足的尽量满足.相信各位同行的研发人员都会 ...
- Windows10中安装了ubuntu虚拟机后xshell无法连接到ubuntu
安装了ubuntu虚拟机后发现shell无法连接到ubuntu的排查步骤: 步骤 1: 检查虚拟机网络配置确认虚拟机网络模式:确认虚拟机的网络模式是否设置为桥接模式或NAT模式.桥接模式可以让你的虚拟 ...
- C#/.NET/.NET Core技术前沿周刊 | 第 19 期(2024年12.23-12.29)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...