Я столкнулся с ss64.com, который дает хорошую помощь в отношении написания пакетных сценариев, которые будет запущен интерпретатор команд Windows.
Однако я не смог найти хорошее объяснение грамматики пакетных скриптов, как вещи расширяются или не расширяются, и как избежать событий.
Вот примеры вопросов, которые я не смог решить:
- Как управляется система котировок? Я сделал TinyPerl script
(foreach $i (@ARGV) { print '*' . $i ; }), скомпилировал его и назвал его следующим образом:-
my_script.exe "a ""b"" c"→ вывод*a "b*c -
my_script.exe """a b c"""→ вывести его*"a*b*c"
-
- Как работает внутренняя команда
echo? Что расширилось внутри этой команды? - Почему мне приходится использовать
for [...] %%Iв сценариях файлов, ноfor [...] %Iв интерактивных сеансах? - Каковы escape-символы и в каком контексте? Как избежать знака процента? Например, как я могу эхо
%PROCESSOR_ARCHITECTURE%буквально? Я обнаружил, чтоecho.exe %""PROCESSOR_ARCHITECTURE%работает, есть ли лучшее решение? - Как совпадают пары
%? Пример:-
set b=a,echo %a %b% c%→%a a c% -
set a =b,echo %a %b% c%→bb c%
-
- Как обеспечить, чтобы переменная передавалась команде как один аргумент, если эта переменная содержит двойные кавычки?
- Как хранятся переменные при использовании команды
set? Например, если я делаюset a=a" b, а затемecho.%a%, я получаюa" b. Однако, если я используюecho.exeиз UnxUtils, я получаюa b. Как происходит%a%расширяется по-другому?
Спасибо за ваши огни.