Как передать полный путь по нажатому файлу в ярлык пакетной команды, установленный как программа по умолчанию для открытия файлов определенных типов - PullRequest
1 голос
/ 07 августа 2011

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

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

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

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

1 Ответ

3 голосов
/ 07 августа 2011

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

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
...