Batch scripting not assigning variable as expected -


i'm working on batch script assign variable string , trim it. i'm facing 2 issues:

  1. the variables not assigning properly. taking last value from variable file.
  2. the variables not assigning first time run script. need run script second time see if variables have been assigned. on third run, can see trim working.

my script looks this:

@echo off /f "tokens=*" %%a in ('findstr "w3svcwinsrvrhosts" "c:\data\siebeladmin\commands\file.txt"') ( /f "tokens=2 delims==" %%b in ("%%a") ( %%c in (%%b) ( echo in loop set str=%%c echo %%c echo.%str% set str=%str:~-6% echo.%str% ))) 

the output looks on third run:

> c:\users\parthod\desktop>b.bat in loop xsj-uvapoms72 7.2.27 7.2.27 in loop xsj-uvapoms82 7.2.27 7.2.27 in loop 172.17.2.26 7.2.27 7.2.27 in loop 172.17.2.27 7.2.27 7.2.27 

you fell delayed expansion trap -- try this:

@echo off setlocal enabledelayedexpansion /f "tokens=*" %%a in ('findstr "w3svcwinsrvrhosts" "c:\data\siebeladmin\commands\file.txt"') ( /f "tokens=2 delims==" %%b in ("%%a") ( %%c in (%%b) ( echo in loop set str=%%c echo %%c echo.!str! set str=!str:~-6! echo.!str! ))) endlocal & set str=%str% 

in between setlocal/endlocal block, delayed variable expansion active. use feature enclose variables !! rather %%.
since setlocal sets new namespace variables, compound endlocal & set statement required transfer value of str beyond block.


Comments

Popular posts from this blog

qt - Using float or double for own QML classes -

Create Outlook appointment via C# .Net -

ios - Swift Array Resetting Itself -