проблема чтения аргументов из пакетного скрипта - PullRequest
0 голосов
/ 17 февраля 2009

В Windows я пытаюсь получить имя файла, используя параметр% ~ f1.

Я делаю это с помощью нового голоса (команды), который я добавил в контекстное меню.

В реестре Windows голос просто вызывает пакетный скрипт, который печатает имя файла, таким образом:

`C:\script.bat %~f1`

но я получаю этот вывод:

`C:\Documents and Settings\Administrator\Desktop\%~f1`

Итак, путь в порядке, но как насчет имени файла ?!

Предложения? Спасибо!

Ответы [ 2 ]

2 голосов
/ 17 февраля 2009

Когда срабатывает пункт контекстного меню, это делается Проводником (не cmd.exe), и Проводник не реализует% ~ f1. Следовательно, вы получите текущий результат.

Вам нужно изменить скрипт, чтобы он получал полное имя файла (вы, вероятно, поместили бы только «C: \ script.bat% 1» или «C: \ script.bat» в реестр) и обновил ваш скрипт использовать% ~ f1:

@echo first argument: %1
@echo filename only: %~f1
@notepad %~f1

Удачи с этим!

0 голосов
/ 17 февраля 2009

Попробуйте заключить всю переменную в%.

C:\script.bat %~f1%

...