我正在尝试使用批处理脚本半自动化地设置我的 Nintendo 电子阅读器 .sav 文件(但是,该文件不必具有 .sav 文件扩展名)。我使用的非自动化方法是按以下顺序执行以下操作:
- 查找文件。
- 将文件复制到与电子阅读器(美国).gba(我的 Nintendo 电子阅读器 BIOS)。
- 将文件的新副本重命名为电子阅读器(美国).sav因此它可以与我选择使用该文件的程序一起使用,该程序的文件名为visualboyadvance-m.exe。
- 加载电子阅读器(美国).gba在程序中,通过拖动文件电子阅读器(美国).gba到程序中。
半自动化方式将按以下顺序进行:
- 打开批处理脚本。
- 选择一个文件。
- 该脚本将文件复制到与电子阅读器(美国).gba。
- 该脚本将文件副本重命名为电子阅读器(美国).sav。这个文件的新名称已固定到脚本中。
- 脚本打开电子阅读器(美国).gba,以及文件。
我希望我的脚本具有以下两个功能:
- 它可以在任何地方执行而无需修改,无论模拟器位于脚本的上级目录还是下级目录。例如,上级目录将是 C:\Script directory\Save directory,而下级目录将是 C:\Save directory\Script directory。
- 该文件可以与脚本位于不同的目录中,但必须与脚本位于同一目录中电子阅读器(美国).gba。
我的代码允许在文件对话框中选择一个文件并打开电子阅读器(美国).gba在程序中,但甚至不能复制文件,而是给了我一个该系统找不到指定的路径。错误。这是重现复制文件时出现的问题的代码,并通过说出所选文件的完整路径以及当前目录来调试该问题:
@echo off
set d="about:<input type=file id=FILE><script>FILE.click();new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0)</script>"
for /f "tokens=*delims=" %%p in ('mshta.exe %d%')do set "f=%%p
echo Selected file: "%f%
echo Current directory: "%cd%
copy "%f%" "e-Reader (USA).sav
start "" visualboyadvance-m.exe "e-Reader (USA).gba"
pause