Как передать полный путь к выбранному файлу ярлыку пакетной команды, установленному в качестве программы по умолчанию, для открытия некоторых определенных типов файлов

У меня есть пакетная команда (установленная как программа по умолчанию для открытия всех файлов изображений), которая запускает следующую команду

rundll32.exe C:\WINDOWS\system32\shimgvw.dll,ImageView_Fullscreen %1

это должно открыть программу просмотра изображений Windows, возможно

Теперь в %1 я должен передать желаемое изображение, доступ к которому наверняка осуществляется из пользовательского интерфейса Windows. Но как я скажу ему, какой файл он должен открыть? Как передать полный путь к файлу с двойным щелчком в параметре пакетной команды, нет ли какой-либо переменной среды, которая содержит полный путь к последнему доступному файлу?




Ответы (1)


Нет. У пакетных файлов есть эта проблема, но ее можно избежать, поскольку передаваемый параметр включает полный путь к конкретному файлу. Однако вы должны заключить параметр в кавычки, чтобы избежать ошибки, если полное имя пути будет (будет!) содержать пробелы:

rundll32.exe C:\WINDOWS\system32\shimgvw.dll,ImageView_Fullscreen "%1"

С другой стороны, вы также можете перетащить несколько имен файлов в пакетный файл. В этом случае вы должны обработать их обычным способом через цикл с командой SHIFT:

:nextfile
if "%1" == "" goto endfiles
  rundll32.exe C:\WINDOWS\system32\shimgvw.dll,ImageView_Fullscreen "%1"
  shift
  goto nextfile
:endfiles
person Aacini    schedule 07.08.2011
comment
+1, но if "%1" == "" goto endfiles должно быть if "%~1" == "" goto endfiles, иначе у вас будут проблемы с пробелами в пути, и это всегда терпит неудачу с такими именами файлов, как me&you.bmp - person jeb; 08.08.2011