Я пишу скрипт для компиляции всех java-файлов во всех подкаталогах папки с использованием javac.
В powershell.exe я могу использовать
>cmd
>javac @targetFile.txt
, где targetfile.txt - текстовый файл, содержащий только пути к файлам для компиляции, например
'A:\path\to\the\java\file.java'
Чтобы выполнить это в сценарии, я сначала попытался
cmd.exe /c "javac @targetFile.txt"
, который выдал следующую ошибку NativeCommand:
cmd.exe: ошибка: недопустимый флаг: в C: \ ps \javaMake.ps1: 15 char: 1 + cmd.exe / c «javac @ targetFile.txt»
Удаление «/ c» устраняет ошибку, но затем сценарий зависает с cmd.exe стартовое сообщение на экране.
Я также предпринял попытку альтернативной конструкции:
$javacPATH = Get-Command javac | Select-Object -ExpandProperty Definition
&$javacPATH " @targetFile.txt"
и получил ту же ошибку.
Я попытался запустить javac без cmd (непосредственно в powershell) и получил следующую ошибку в Powershell.exe:
Оператор разбивки '@' нельзя использовать для ссылки на переменные ввыражение.«@targetFile» можно использовать только в качестве аргумента команды.Для ссылки на переменные в выражении используйте '$ targetFile'.
Как я могу передать параметр @ targetFile.txt в javac в cmd в ISE?