Пакетный файл включает внешний файл для переменных

У меня есть пакетный файл, и я хочу включать внешний файл, содержащий некоторые переменные (скажите что переменные конфигурации). Действительно ли это возможно?

88
задан Joey 31 December 2011 в 10:42
поделиться

2 ответа

Примечание: Я предполагаю, что командные файлы Windows, поскольку большинство людей, кажется, не подозревают о существенных различиях и просто слепо вызывают все с серым текстом на черном фоне DOS. Тем не менее, первый вариант должен работать и в DOS.

Исполняемая конфигурация

Самый простой способ сделать это - просто поместить переменные в пакетный файл, каждая со своим собственным оператором set :

set var1=value1
set var2=value2
...

и в вашем основном пакете:

call config.cmd

Конечно, это также позволяет создавать переменные условно или в зависимости от аспектов системы, так что это довольно универсально. Однако там может выполняться произвольный код, и в случае синтаксической ошибки ваш основной пакет также выйдет. В мире UNIX это кажется довольно обычным явлением, особенно для оболочек. И если вдуматься, autoexec.bat - это не что иное, как.

Пары ключ / значение

Другой способ - это какие-то пары var = value в файле конфигурации:

var1=value1
var2=value2
...

Затем вы можете использовать следующий фрагмент для их загрузки:

for /f "delims=" %%x in (config.txt) do (set "%%x")

Это использует тот же прием, что и раньше, а именно просто использует набор в каждой строке. Кавычки нужны, чтобы избежать таких вещей, как <, > , & , | . Однако они сами сломаются, когда во входных данных будут использоваться кавычки. Также всегда нужно соблюдать осторожность при дальнейшей обработке данных в переменных, хранящихся с такими символами.

В общем, автоматическое экранирование произвольного ввода, чтобы не вызывать головной боли или проблем в пакетных файлах, мне кажется совершенно невозможным. По крайней мере, я еще не нашел способа сделать это.Конечно, с первым решением вы перекладываете ответственность на того, кто пишет файл конфигурации.

116
ответ дан 24 November 2019 в 07:34
поделиться

Если внешний файл конфигурации также является допустимым пакетным файлом, вы можете просто использовать:

call externalconfig.bat

внутри вашего скрипта. Попробуйте создать следующие a.bat:

@echo off
call b.bat
echo %MYVAR%

и b.bat:

set MYVAR=test

Запуск a.bat должен генерировать вывод:

test
30
ответ дан 24 November 2019 в 07:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: