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
相关产品推荐
相关产品推荐

