0

I am writing a batch to automate the installation of a a number of settings, INI files and APKs on a multitude of devices. I am getting errors in the batch due to the variables in showing NULL.

I have checked that the config.ini and ADBCommands.ini and adb+.bat are in the correct location.

Can you help?

::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

Contents the ini files config.ini

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

Contents the ini files 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
aschipfl
  • 33,626
  • 12
  • 54
  • 99
beecho01
  • 85
  • 9

1 Answers1

1

Because your path has spaces you need to enclose the path with quotes. But when you do this, you need to tell the FOR /F command that you are still parsing a file and not a variable. So you need to use the USEBACKQ option.

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

AND

@for /f "usebackq tokens=1,2 delims==" %%d in ("%Commands%") do (
Squashman
  • 13,649
  • 5
  • 27
  • 36