Как искать файл (Win7 / 64bit)

Мне нужно быстро написать простой графический интерфейс через приложение командной строки. Требуется два шага:

  1. Укажите путь к входному файлу,
  2. Укажите путь к выходному файлу (не существует)

Я обнаружил предыдущий пост, однако попытка заставить работать выше (1) кажется безумной задачей.

Действительно, BrowseForFolder кажется, работает только в некоторых странных случаях, вы можете использовать BIF_BROWSEINCLUDEFILES только для *.pdf и / или *.txt (проб и ошибок). Я могу получить сообщение об ошибке, если выберу *.dll и / или *.jpg (не спрашивайте).

Поэтому вместо этого я отказался от этого подхода и последовал другому, в данном случае (objIE.Document.all.FileSelect), возвращается только имя выбранного файла, путь по какой-то причине кажется всегда установлен на "c:/fakepath". Итак, мне снова не хватает полного пути, чтобы передать его в приложение командной строки.

Есть ли какой-нибудь разумный способ (‹10 строк кода) заставить (1) и (2) работать на Win7 / 64bits (VBS, HTA ...)?


person malat    schedule 05.03.2014    source источник


Ответы (2)


Не знаю, интересует ли людей проблема выбора файла BrowseForFolder, но вот что я нашел. У меня была такая же проблема с выбором файлов с помощью BrowseForFolder с помощью & H4000 / BIF_BROWSEINCLUDEFILES. Я мог бы получить возврат с файлами .docx, но не с файлами .doc и, как вы говорите, с файлами .pdf. Для меня .txt ничего не вернет, как и файлы .rec WMI Backup, которые мне нужны для сценария, который я пишу, что приводит к этой информации об ошибке: -

Error: Unspecified error
Code: 80004005
Source: (null)

Посмотрев на другие решения, я вернулся к этому как к своему предпочтительному выбору, к тому же оно делало мне голову тем, что не хотело работать. Так что, в конце концов, это кажется очень простым. Чтобы распознать мои файлы .rec, я добавляю это в реестр: -

[HKEY_CLASSES_ROOT\.rec]
@="WMI.Backup"

[HKEY_CLASSES_ROOT\WMI.Backup]
@="WMI Backup"
"BrowseInPlace"="1"

Чтобы распознать файлы .txt, я добавляю это в реестр: -

[HKEY_CLASSES_ROOT\txtfile]
"BrowseInPlace"="1"

Итак, "BrowseInPlace" = "1" кажется самородком.

Кажется настолько невероятно простым, что я уверен, что это решение где-то есть, но я никогда не сталкивался с ним, поэтому подумал, что выложу его в Интернете.

Мне было бы интересно узнать, что это работает для других, так как я боюсь, что эта проблема может свести меня с ума, до сих пор не могу поверить, что это работает. Надеюсь это поможет.

person Chris Fletcher    schedule 08.12.2016

Вот 3 разных способа делать то, что вы хотите:

http://www.robvanderwoude.com/vbstech_ui_fileopen.php
person Nathan Rice    schedule 05.03.2014