Contents of variable set from for loop variable substitution refer to previous run in Windows batch script -
if code saved file tst.bat:
@echo off %%a in (%1) ( echo "%%~fa" set b=%%~fa echo "%b%" ) and invoked twice follows, i'd expect this:
c:\windows\temp>tst.bat abc "c:\windows\temp\abc" "c:\windows\temp\abc" c:\windows\temp>tst.bat xyz "c:\windows\temp\xyz" "c:\windows\temp\xyz" but instead, this:
c:\windows\temp>tst.bat abc "c:\windows\temp\abc" "" c:\windows\temp>tst.bat xyz "c:\windows\temp\xyz" "c:\windows\temp\abc" do have wrong expectations?
once upon time, wrote great intro answer i'm give, can't find it. basically, if want have variables inside for loop update loop, need use delayedexpansion.
@echo off setlocal enabledelayedexpansion %%a in (%1) ( echo "%%~fa" set b=%%~fa echo "!b!" )
Comments
Post a Comment