У меня есть пакетный скрипт, который принимает аргументы из командной строки. В одном из аргументов есть *. Несмотря на помещение аргумента в кавычки, * расширяется до того, как аргумент используется в пакетном скрипте.
Я использую следующий код для разбора аргументов:
set CMDLINE_ARGS=%~1
shift
:get_args
if "%~1" == "" goto execute
set CMDLINE_ARGS=%CMDLINE_ARGS% %~1
shift
goto :get_args
По какой-то причине это работает на Windows Server 2003, но не на Server 2008.