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

Linux下批量生成.iso游戏启动脚本失败问题求助

解决批量生成GameCube ISO启动脚本的问题

嘿,刚接触脚本就能自己动手写批量工具,已经超棒啦!咱们一步步拆解你的脚本问题,帮你搞定把ISO转成Steam可执行启动脚本的需求~

你的脚本为啥没生成文件?

主要有3个核心问题:

1. For循环的路径写法错误

你写的for file in "$/media/dexterdy/d60690f8-0511-44bf-aa66-b8a211460113/samsung/gamecube/";会把整个目录路径当成单个文件来遍历,而不是目录里的所有文件。相当于循环只跑了一次,$file的值就是那个目录路径,自然匹配不上.iso后缀。

2. 未处理带空格的文件名

你的判断语句[ ${file: -4} == ".iso" ]里,变量$file没加双引号。如果文件名带空格(比如Super Mario.iso),Shell会把它拆成多个单词,导致判断完全失效,甚至报错。

3. 路径拼接的潜在问题

就算前面的问题都解决,生成脚本里的--exec="/media/.../${file}"也会因为文件名带空格,被拆成多个参数,导致Dolphin找不到正确的ISO文件。


修正后的完整脚本

我给你改好了脚本,还加了实用的细节处理,直接用就行:

#!/bin/bash
# 遍历目标目录下所有.iso文件,自动处理带空格的文件名
for iso_file in "/media/dexterdy/d60690f8-0511-44bf-aa66-b8a211460113/samsung/gamecube/"*.iso; do
    # 防止目录里没有ISO时,生成错误的脚本(比如匹配到"*.iso"字符串)
    [ -f "$iso_file" ] || continue
    
    # 生成对应的启动脚本:把ISO后缀换成.sh(比如Super Mario.iso → Super Mario.sh)
    # 如果你想要保留.iso.sh的格式,就改成 sh_file="${iso_file}.sh"
    sh_file="${iso_file%.iso}.sh"
    
    # 写入启动命令,所有变量都加双引号,确保空格文件名能被正确识别
    cat > "$sh_file" << EOF
dolphin-emu --batch --exec="$iso_file"
EOF
    
    # 给脚本添加可执行权限,Steam才能直接运行它
    chmod +x "$sh_file"
done

逐行解释关键改动

  • 直接匹配ISO文件:用*.iso通配符,让for循环只遍历目录里的ISO文件,省去了后缀判断的步骤,更高效。
  • 变量加双引号:所有用到$iso_file和$sh_file的地方都加了双引号,完美处理带空格的文件名。
  • 防空判断:[ -f "$iso_file" ] || continue确保如果目录里没有任何ISO,不会生成错误的脚本文件。
  • 添加可执行权限:chmod +x让生成的.sh脚本变成可执行文件,Steam添加的时候直接选它就能运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 14:07:41