В настоящее время я пытаюсь преобразовать серию пакетных файлов в сценарии powershell. Я хотел бы запустить компилятор для исходных файлов, которые существуют в каталоге, рекурсивно. Компилятору требуется длинный список аргументов. Суть в том, что я хочу, чтобы аргументы были переменными, чтобы я мог изменять их по мере необходимости. Это типичный вызов из командного файла (упрощенный для удобства чтения и длины):
"C: \ PICC Compilers \ picc18.exe" --pass1
"C: \ Src Files \ somefile.c"
"-IC: \ Включить файлы" "-IC: \ Header
Файлы "-P
--runtime = по умолчанию, + ясно, + первонач, -keep + скачать + stackwarn, -config + CLIB, -plib
--opt = по умолчанию, + asm, -speed, + пробел, 9 --warn = 0 --debugger = realice -Blarge --double = 24 --cp = 16 -g --asmlist "--errformat = Ошибка [ % n]% f;% l.% c
% s "" --msgformat = Advisory [% n]% s "--OBJDIR =" C: \ Built Files "
"--warnformat = Warning [% n]% f;% l.% c% s"
Эта команда выполняется нормально, когда включена в пакетный файл, но я начинаю получать ошибки, когда копирую и вставляю команду в powershell. Это только мой второй день работы с PowerShell, но я разрабатывал с .NET в прошлом. Мне удалось собрать следующую попытку:
$srcFiles = Get-ChildItem . -Recurse -Include "*.c"
$srcFiles | % {
$argList = "--pass1 " + $_.FullName;
$argList += "-IC:\Include Files -IC:\Header Files -P --runtime=default,+clear,+init,-keep,+download,+stackwarn,-config,+clib,-plib --opt=default,+asm,-speed,+space,9 --warn=0 --debugger=realice -Blarge --double=24 --cp=16 -g --asmlist '--errformat=Error [%n] %f; %l.%c %s' '--msgformat=Advisory[%n] %s' '--warnformat=Warning [%n] %f; %l.%c %s"
$argList += "--OBJDIR=" + $_.DirectoryName;
&"C:\PICC Compilers\picc18.exe" $argList }
Я знаю, что у меня, вероятно, есть несколько проблем с приведенным выше кодом, а именно, как передать аргументы и как я работаю с кавычками в списке аргументов. Неправильно, это должно иллюстрировать то, что я пытаюсь достигнуть. Любые предложения о том, с чего начать?