Я столкнулся с 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%
расширяется по-другому?
Спасибо за ваши огни.