ファイル ダイアログから選択したファイルをコピーし、コピーしたファイルの名前を変更する操作をすべて 1 つのバッチ スクリプトで実行するにはどうすればよいですか?

ファイル ダイアログから選択したファイルをコピーし、コピーしたファイルの名前を変更する操作をすべて 1 つのバッチ スクリプトで実行するにはどうすればよいですか?

バッチ スクリプトを使用して、Nintendo e-Reader の .sav ファイル (ただし、ファイルの拡張子は .sav である必要はありません) のセットアップを半自動化しようとしています。自動化しない方法では、次の順序で実行します。

  1. ファイルを検索します。
  2. ファイルを同じディレクトリにコピーします電子書籍リーダー(米国).gba(私の任天堂電子書籍リーダーの BIOS)。
  3. 新しいファイルのコピーの名前を次のように変更します。電子書籍リーダー(米国).savつまり、ファイルを使用するために選択したプログラムで動作します。ファイル名はvisualboyadvance-m.exe
  4. 負荷電子書籍リーダー(米国).gbaプログラム内でファイルと一緒にドラッグして電子書籍リーダー(米国).gbaプログラムに。

半自動の方法は、次の順序で実行することで機能します。

  1. バッチ スクリプトを開きます。
  2. ファイルを選択してください。
  3. スクリプトはファイルを同じディレクトリにコピーします。電子書籍リーダー(米国).gba
  4. スクリプトはファイルのコピーの名前を次のように変更します。電子書籍リーダー(米国).savこのファイルの新しい名前はスクリプトに固定されます。
  5. スクリプトが開きます電子書籍リーダー(米国).gba、ファイルと一緒に。

私のスクリプトに欲しい機能は、次の 2 つです。

  1. エミュレータがスクリプトの上位ディレクトリにあるか下位ディレクトリにあるかに関係なく、変更せずにどこでも実行できます。たとえば、上位ディレクトリは C:\Script ディレクトリ\Save ディレクトリのようになり、下位ディレクトリは C:\Save ディレクトリ\Script ディレクトリのようになります。
  2. ファイルはスクリプトとは別のディレクトリに置くことができますが、電子書籍リーダー(米国).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

関連情報