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

如何在Cmd/Bat文件中将父目录存为变量适配可变盘符SD卡

适配任意盘符的Windows批处理脚本及Steam Deck Linux兼容方案

Windows 脚本修改

核心思路是使用相对脚本所在位置的路径替代固定盘符路径,利用批处理内置变量%~dp0获取脚本自身的绝对路径(包含盘符和末尾反斜杠),以此为基准定位所有文件。

修改后的 3DS.cmd

@echo off
echo Keeping Window Active for GOG Time Tracking

:: 获取脚本所在的绝对路径(自动适配当前盘符)
set "SCRIPT_DIR=%~dp0"

:: 切换到RetroArch程序目录
cd "%SCRIPT_DIR%Games\RetroArch\"

:: 启动RetroArch并加载指定核心与ROM
"retroarch.exe" -L "cores\citra_libretro.dll" %1 -f

修改后的 Animal Crossing New Leaf.cmd

@echo off

:: 获取脚本所在的绝对路径
set "SCRIPT_DIR=%~dp0"

:: 调用3DS.cmd并传入ROM的绝对路径(基于脚本位置自动生成)
call "3DS.cmd" "%SCRIPT_DIR%Games\Nintendo\3DS\Games\Animal Crossing New Leaf.3ds"

Linux Steam Deck 兼容方案

Steam Deck使用Linux系统,需编写Shell脚本替代批处理,逻辑与Windows一致,通过realpath和dirname获取脚本所在绝对路径。

创建 3DS.sh

#!/bin/bash
echo "Keeping Window Active for GOG Time Tracking"

# 获取脚本所在的绝对路径
SCRIPT_DIR=$(dirname "$(realpath "$0")")

# 切换到RetroArch目录
cd "$SCRIPT_DIR/Games/RetroArch/"

# 启动RetroArch(Linux下核心文件后缀为.so)
./retroarch -L cores/citra_libretro.so "$1" -f

创建 Animal Crossing New Leaf.sh

#!/bin/bash

# 获取脚本所在的绝对路径
SCRIPT_DIR=$(dirname "$(realpath "$0")")

# 调用3DS.sh并传入ROM路径
./3DS.sh "$SCRIPT_DIR/Games/Nintendo/3DS/Games/Animal Crossing New Leaf.3ds"

权限设置

创建完成后,需给Shell脚本添加可执行权限:

chmod +x 3DS.sh "Animal Crossing New Leaf.sh"

关键说明

  • Windows下%~dp0:直接返回脚本文件所在的完整绝对路径(如SD卡盘符为D:\时,脚本在根目录则返回D:\),无需手动指定盘符。
  • Linux下realpath "$0":获取脚本的绝对路径,再通过dirname提取目录部分,确保路径不受当前工作目录影响。
  • 所有文件路径均基于脚本位置的相对路径构建,无论SD卡挂载到哪个盘符/路径,都能正确定位程序和ROM文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:35:29