Итак, я довольно долго искал, как это сделать, но я сдался, потому что просто не мог ничего найти.
Итак, у меня есть код (ниже); его главная цель - получить 9 аргументов и назначить их как переменные - игнорировать эхо и пиппинг.
Мой вопрос: Как я могу упростить это с помощью цикла for или такого, чтобы он не занимал так много кода, и если возможно, иметь более 9 аргументов
set pkg1=%1
set pkg2=%2
set pkg3=%3
set pkg4=%4
set pkg5=%5
set pkg6=%6
set pkg7=%7
set pkg8=%8
set pkg9=%9
IF DEFINED pkg1 (echo %1.ini 1> %WINGET_TEMP%\args.rdc 2>nul)
IF DEFINED pkg2 (echo %2.ini 1>> %WINGET_TEMP%\args.rdc 2>nul)
IF DEFINED pkg3 (echo %3.ini 1>> %WINGET_TEMP%\args.rdc 2>nul)
IF DEFINED pkg4 (echo %4.ini 1>> %WINGET_TEMP%\args.rdc 2>nul)
IF DEFINED pkg5 (echo %5.ini 1>> %WINGET_TEMP%\args.rdc 2>nul)
IF DEFINED pkg6 (echo %6.ini 1>> %WINGET_TEMP%\args.rdc 2>nul)
IF DEFINED pkg7 (echo %7.ini 1>> %WINGET_TEMP%\args.rdc 2>nul)
IF DEFINED pkg8 (echo %8.ini 1>> %WINGET_TEMP%\args.rdc 2>nul)
IF DEFINED pkg9 (echo %9.ini 1>> %WINGET_TEMP%\args.rdc 2>nul)
command-line
batch
powershell
ms-dos
Jared Allard
источник
источник
Ответы:
Без каких-либо уродливых идти к заявления:
Выход
Если вы хотите удалить кавычки из аргументов, содержащих пробелы, используйте
set pkg!cnt!=%%~a
вместоset pkg!cnt!=%%a
(в первой есть дополнительная тильда на случай, если вы не заметите разницу).источник
*
,?
, или же!
, Но будут проблемы, если какой-либо из этих символов будет присутствовать в аргументах. Надежное решение, которое поддерживает эти символы, требует GOTO.Это должно помочь вам достичь того, что вы хотите:
Вот проверка этого в командном файле с именем doit.bat:
источник
"%~1"
вместо"%1"
, Ваше заявление о приращении может быть упрощено доset /a i+=1
GetAll.cmd:
Разделить переменную
AllArg
любой метод.источник
=
является разделителем токенов и не существует практического метода поиска и замены=
в пределах партии.