Squashman дал в своем комментарии почти всю информацию, необходимую для этой задачи кодирования пакетного файла.
Во-первых, не добавляйте пробелы вокруг знака равенства, назначая строковое значение переменной окружения. См. Ответ на Why is no string output with 'echo %var%' after using 'set var = text' on command line? для подробного объяснения.
Во-вторых, не используйте имена переменных среды, которые уже предопределены Windows, например PATH
, что является чрезвычайно важной предопределенной переменной среды. Откройте окно командной строки и запустите set
, чтобы получить все переменные среды, предопределенные для текущей учетной записи пользователя. Подробности об этих переменных можно найти в статье Википедии о Windows Environment Variables. Использование path
в качестве имени переменной среды здесь определенно в сообщении об ошибке в следующей строке, потому что java.*
с расширением файла, определенным в переменной окружения PATHEXT
, не может быть найден в текущем каталоге или в любом каталоге, указанном в переменной окружения PATH
.
В-третьих, проводник Windows передает файлы, выбранные в начальный процесс, с использованием . Отправить на с полным именем файла (путь + имя файла + расширение файла), заключенное в двойные кавычки. Запустите в окне командной строки call /?
, чтобы получить справки о том, как ссылаться на строку аргумента командного файла.
Так все, что вам может понадобиться в вашем пакетном файле:
java.exe test.class "%~dp1"
Если вы хотите увидеть, как пакетный файл запускается Windows Explorer, поместить в верхней части пакетного файла следующие две команды:
@echo %0 %*
@pause
Первая строка, выводимая командным файлом, показывает, как Windows Explorer запустил командный файл с помощью командного интерпретатора cmd.exe
.
не уверен, что [это] (http://stackoverflow.com/questions/28190126/how-can-i-embed-java-code-into-batch-scriptis-it-possible-to-create-java- летучая мышь) поможет вам, но вы можете взглянуть. – npocmaka
Пожалуйста, не используйте переменную named path. Это уже экологическая переменная, используемая системой. Независимо от файла, передаваемого в пакетный файл на консоли, перетаскивания или щелчка правой кнопкой мыши sendto, весь путь к файлу отправляется в пакетный файл и становится аргументом для командного файла. 'set fpath =% ~ dp1' – Squashman
Вы можете использовать запись [sendTo entry] (http://stackoverflow.com/questions/6852833/running-a-batch-script-by-right-clicking-any-file), посмотреть Вот – LotPings