Как скопировать файл, выбранный в диалоговом окне файла, а затем переименовать скопированный файл, и все это в одном пакетном скрипте?

Как скопировать файл, выбранный в диалоговом окне файла, а затем переименовать скопированный файл, и все это в одном пакетном скрипте?

Я пытаюсь полуавтоматизировать настройку файлов .sav моего Nintendo e-Reader (однако файл не обязательно должен иметь расширение .sav) с помощью пакетного скрипта. Неавтоматизированный способ, который я бы использовал, заключался бы в следующем порядке:

  1. Найдите файл.
  2. Скопируйте файл в тот же каталог, что иe-Reader (США).gba(BIOS моего Nintendo e-Reader).
  3. Переименуйте новую копию файла вe-Reader (США).savпоэтому он работает с программой, которую я выбрал для использования с файлом, у которой есть имя файлаvisualboyadvance-m.exe.
  4. Нагрузкаe-Reader (США).gbaв программе вместе с файлом, перетащивe-Reader (США).gbaв программу.

Полуавтоматический способ будет работать следующим образом:

  1. Откройте пакетный скрипт.
  2. Выберите файл.
  3. Скрипт копирует файл в тот же каталог, что иe-Reader (США).gba.
  4. Скрипт переименовывает копию файла вe-Reader (США).sav. Это новое имя файла зафиксировано в скрипте.
  5. Скрипт открываетсяe-Reader (США).gba, вместе с файлом.

Вот две функции, которые я хотел бы видеть в своем сценарии:

  1. Его можно запустить где угодно без изменений, независимо от того, находится ли эмулятор в каталоге выше или ниже по отношению к скрипту. Например, каталог выше будет выглядеть как C:\Script directory\Save directory, тогда как каталог ниже будет выглядеть как C:\Save directory\Script directory.
  2. Файл может находиться в другом каталоге, чем скрипт, но должен находиться в том же каталоге, что иe-Reader (США).gba.

Мой код позволяет выбрать файл в диалоговом окне и открываетe-Reader (США).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

Связанный контент