2013-09-24 3 views
0

Вот сценарий:Пакетный сценарий - параметр Вложенная внутренняя переменная?

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

Скрипт синхронизации папки выбирается из большого списка папок на основе параметра, переданного ему через родительский скрипт.

команда SET ребенка скрипта выглядит примерно так:

ECHO SET pair-folder-%1=yes>>c:\variable.bat 

Это производит переменную при следующем запуске, загружаемого родительского сценария. В этом заключается rub: Как мне создать скрипт действия (через ловушку IF), который вызывает эту переменную при следующем появлении дочернего скрипта? Я полагаю, моя ловушка IF будет выглядеть примерно так:

IF %pair-folder-%1%=yes GOTO nopair 

Проблема в том, что я не могу показаться, чтобы получить партию, чтобы интерпретировать это правильно - я попытался вложенности переменной а несколько различных способов, с помощью отложенной Expansion, Нужно ли сначала сначала сопоставить параметр с локальной переменной?

Как правило, после того, как родительские скрипты вызывают переменную.bat при следующем выполнении, как мне затем ссылаться на эту новую заданную переменную из дочернего скрипта?

ответ

0

Поскольку вы добавление set pair-folder-%1=yes строки в variable.bat, то вы получите varable.bat установить большее множество pair-folder-* переменных.

Теперь, если вы хотите, чтобы проверить, является ли pair-folder-% установлен, то

if defined pair-folder-%1 ... 

сделает это за вас.

Если вы хотите, чтобы найти значение пары-папке-% 1 (то есть это не просто набор или не установлен), то

set "valuefound=" 
for /f "tokens=1*delims==" %%i in ('set pair-folder-%1 2^>nul') do (
if /i "%%i"=="pair-folder-%1" set "valuefound=%%j" 
) 

должны сделать это - valuefound будет «установить», чтобы никакой ценности (т.е. undefined), если переменная undefined else ее значение.

+0

СПАСИБО! IF DEFINED полностью берет торт - мне пришлось сопоставить параметр переменной, прежде чем он был правильно распознан, но это только одна дополнительная (временная) строка. Отличное предложение, спасибо снова. – user2363189

Смежные вопросы