2017-02-20 31 views
0

Я пишу пакет для автоматизации установки нескольких параметров, файлов INI и APK на множестве устройств. Я получаю ошибки в партии из-за переменных при показе NULL.Значение переменной, не отображаемое в Win Batch

Я проверил, что config.ini и ADBCommands.ini и ADB + .bat находятся в правильном месте.

Вы можете помочь?

::Global 
@echo off 
cd C:\ 

::INI Locations 
set mypath=%~dp0 
set config=%mypath%config.ini 
set Commands=%mypath%ADBCommands.ini 
set multi=%mypath%adb+.bat 
@pause 

::Set Varialbes 
@for /f "tokens=1,2 delims==" %%a in (%config%) do (
if %%a==Build set Build=%%b 
if %%a==Version set Version=%%b 
if %%a==Creator set Creator=%%b 
if %%a==DateModified set DateModified=%%b 
if %%a==ScreenTimeout set ScreenTimeout=%%b 
if %%a==UnknownSources set UnknownSources=%%b 
if %%a==ScreenBrightness set ScreenBrightness=%%b 
) 

@for /f "tokens=1,2 delims==" %%d in (%Commands%) do (
if %%d==ScreenTimeoutCommand set ScreenTimeoutCommand=%%e 
if %%d==UnknownSourcesCommand set UnknownSourcesCommand=%%e 
if %%d==ScreenBrightnessCommand set ScreenBrightnessCommand=%%e 
if %%d==OpenSOTICommand set OpenSOTICommand=%%e 
) 

::Build information 
cls 
@echo. 
@echo. 
@echo  BUILD:    %Build% 
@echo  VERSION:   %Version% 
@echo  BUILD CREATOR:  %Creator% 
@echo  LAST UPDATED:  %DateModified% 
@echo. 
@echo. 
@pause 

Содержание ини файлы CONFIG.INI

Build=XCover 3 
Version=1.0.0 
Creator=James B 
DateModified=20/02/2017 
ScreenTimeout=300000 
UnknownSources=1 
ScreenBrightness=225 

Содержанию INI файлы ADBCommands.ini

ScreenTimeoutCommand=shell settings put system screen_off_timeout 
UnknownSourcesCommand=shell settings put system install_non_market_apps 
OpenSOTICommand=shell am start -n net.soti.mobicontrol.elm.samsung/net.soti.mobicontrol.startup.SplashActivity 
+0

¿вы проверили файлы разрешений? – AFR

+0

Все файлы имеют полные системные и пользовательские разрешения – beecho01

+0

Вам не нужно устанавливать переменные FOR для переменных среды для их использования. Просто используйте мета переменные FOR напрямую. Кроме того, у вас уже есть эхо-сигнал, поэтому вам не нужно предшествовать всем вашим командам с помощью @. Кроме того, я не понимаю, почему вы используете: 'cmd.exe/c' для выполнения ваших команд FOR. – Squashman

ответ

1

Потому что ваш путь содержит пробелы, нужно приложить путь с кавычками. Но когда вы это делаете, вам нужно сообщить команде FOR/F, что вы все еще разбираете файл, а не переменную. Поэтому вам нужно использовать опцию USEBACKQ.

@for /f "usebackq tokens=1,2 delims==" %%a in ("%config%") do (

И

@for /f "usebackq tokens=1,2 delims==" %%d in ("%Commands%") do (
+0

Работал отлично! Огромное спасибо – beecho01

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

  • Нет связанных вопросов^_^