Я пытаюсь вызвать другой экземпляр CMD и передать ему данные из родительского экземпляра.
Мне известен общий путь использования переменных, но в этом случае это было бы неосуществимо, поскольку endlocal и bridging были бы слишком большими неудобствами (пришлось бы передавать десятки переменных). Я также знаю, что мог бы использовать временные файлы для переноса всех данных, которые я хочу легко, но это оставило бы нежелательные следы. РЕДАКТИРОВАТЬ: setx также может быть использован довольно успешно.
Я специально искал что-то вроде обычного использования аргументов, например:
test.bat -setvar"variable"="value" -setvar...
Я ранее нашел один способ с его ограничениями
Обнаружил в другом потоке, что могу добавить команду в конец запуска cmd
start cmd /c call "test.bat" ^& PAUSE
Конечно, мы можем изменить это
start cmd /c call PAUSE ^& TIMEOUT 5 ^& PAUSE ^& test.bat
Команды не могут иметь "" и, я подозреваю, никаких специальных символов. это представляет проблему при попытке портировать сложные переменные.
Кстати, о специальных персонажах:
start cmd /c call (PAUSE) ^& (TIMEOUT 5) ^& (REM !"#¤%&/=?`´^*"-.,_:;\*~¨) ^& test.bat
Это не будет работать вообще. Я мог бы избежать интерпретации, но в случае некоторых переменных у меня не было бы роскоши знать достаточно значений, чтобы можно было обработать их во все, что я мог бы обработать. - На самом деле, кажется, что скобки не допускаются.
Одна из главных вещей, которые мне нужно сделать, это передать имена томов, что легко достижимо, но этого недостаточно.
start cmd /c call echo \\?\Volume{6537febd-01bc-11d6-adb5-806e6f6e6963}\ ^& TIMEOUT 5 ^& PAUSE ^& test.bat
Это уже может быть рассмотрено в другом месте, и если так, то проблема в том, что я не могу найти правильные ключевые слова или параллели с соответствующими темами.