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

在PowerShell脚本中循环执行Java Jar命令遇阻求解决方案

可行解决方案

方法1:直接在循环中执行命令

这是最简单可靠的方式,PowerShell可以直接调用外部可执行文件,无需额外封装:

# 循环执行5次示例
for ($i = 1; $i -le 5; $i++) {
    java -jar some_program.jar "C:\Users\the_path_to_screenshot_folder\"
    # 可选:每次执行后等待10秒,根据需求调整
    Start-Sleep -Seconds 10
}

# 无限循环(按Ctrl+C终止)
while ($true) {
    java -jar some_program.jar "C:\Users\the_path_to_screenshot_folder\"
    Start-Sleep -Seconds 10
}

方法2:用参数数组存储命令(避免解析错误)

如果需要将命令参数存储起来,推荐用参数数组,防止路径含空格或特殊字符导致的解析问题:

# 定义参数数组
$javaArgs = @("-jar", "some_program.jar", "C:\Users\the_path_to_screenshot_folder\")

# 循环执行
for ($i = 1; $i -le 5; $i++) {
    & java $javaArgs
    Start-Sleep -Seconds 10
}

方法3:正确使用Start-Process

之前失败大概率是参数传递错误,Start-Process的-ArgumentList需要拆分每个参数单独传入:

for ($i = 1; $i -le 5; $i++) {
    # -Wait参数确保PowerShell等待Java程序执行完毕再进入下一次循环
    Start-Process -FilePath "java" -ArgumentList "-jar", "some_program.jar", "C:\Users\the_path_to_screenshot_folder\" -Wait
    # 可选:隐藏Java程序窗口
    # Start-Process -FilePath "java" -ArgumentList "-jar", "some_program.jar", "C:\Users\the_path_to_screenshot_folder\" -Wait -WindowStyle Hidden
    Start-Sleep -Seconds 10
}

方法4:后台执行循环(Start-Job)

如果需要在后台执行循环,使用Start-Job时要注意通过参数传递外部变量:

# 定义后台作业的执行逻辑
$jobScript = {
    param($jarName, $targetFolder)
    while ($true) {
        java -jar $jarName $targetFolder
        Start-Sleep -Seconds 10
    }
}

# 启动后台作业,传递参数
$job = Start-Job -ScriptBlock $jobScript -ArgumentList "some_program.jar", "C:\Users\the_path_to_screenshot_folder\"

# 查看作业状态
Get-Job $job

# 如需查看作业输出(若Java程序有控制台输出)
# Receive-Job $job

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 16:46:10