You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell批量执行Java反编译命令并指定输出路径?

批量反编译Project Zomboid的.class文件

需求

我想用以下命令批量反编译嵌套文件夹内的数百个.class文件:

java -cp "C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.2.4\plugins\java-decompiler\lib\java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -hdc=0 -dgs=1 -rsy=1 -rbr=1 -lit=1 -nls=1 -mpm=60 (source) (dest)

已完成操作

我已经能通过以下命令定位所有目标.class文件:

dir -Path "C:\Program Files (x86)\Steam\steamapps\common\ProjectZomboid" -Recurse -Include *.class

尝试通过管道结合ForEach-Object实现批量处理,但因未指定输出路径报错:

dir -Path "C:\Program Files (x86)\Steam\steamapps\common\ProjectZomboid" -Recurse -Include *.class | ForEach-Object -Process {java -cp "C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.2.4\plugins\java-decompiler\lib\java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -hdc=0 -dgs=1 -rsy=1 -rbr=1 -lit=1 -nls=1 -mpm=60 "$_"}

核心难点

源文件的获取已经解决,但不知道如何配置输出路径:需要将C:\Program Files (x86)\Steam\steamapps\common\ProjectZomboid\zombie\SandboxOptions.class这类路径转换为.\zombie\——也就是把前缀C:\Program Files (x86)\Steam\steamapps\common\ProjectZomboid替换为.,同时去掉文件名。

最终可用命令

感谢帮助,我已经写出了可正常运行的完整命令(可能存在更优写法,但功能正常):

dir -Path "C:\Program Files (x86)\Steam\steamapps\common\ProjectZomboid" -Recurse -Include *.class | ForEach-Object -Process {java -cp "C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.2.4\plugins\java-decompiler\lib\java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -hdc=0 -dgs=1 -rsy=1 -rbr=1 -lit=1 -nls=1 -mpm=60 $_ ($_.PSParentPath.ToString().Replace('Microsoft.PowerShell.Core\FileSystem::C:\Program Files (x86)\Steam\steamapps\common\ProjectZomboid', '.') + '\')}

内容的提问来源于stack exchange,提问作者Modin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 14:25:08