Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Batch script for loop won't set variable

I have a batch script trying to execute out of anthill to get the folder names containing plsql to be compiled.

for /F %%a in ('dir /b D:\AHP_WorkDir\var\jobs\projects\rprt_test\rprt_test\plsql') do (
  set FOLDER=%%a
  echo *** PROCESSING FOLDER %FOLDER% ***
)

This echos * PROCESSING FOLDER *

as if the variable is not getting set, which I'm pretty sure is true after spending way too long on verifying it

So...What am I doing wrong?

like image 749
Denis DuQuaine Avatar asked Sep 20 '12 18:09

Denis DuQuaine


1 Answers

This is essentially a duplicate of a question asked earlier today. Here's my answer from said question...

You'll want to look at the EnableDelayedExpansion option for batch files. From the aforementioned link:

Delayed variable expansion is often useful when working with FOR Loops. Normally, an entire FOR loop is evaluated as a single command even if it spans multiple lines of a batch script.

So your script would end up looking something like this:

@echo off
setlocal enabledelayedexpansion

for /F %%a in ('dir /b D:\AHP_WorkDir\var\jobs\projects\rprt_test\rprt_test\plsql') do (
  set FOLDER=%%a
  echo *** PROCESSING FOLDER !FOLDER! ***
)

As an alternative, just use the %%a variable in your inner loop, rather than creating a new variable.

like image 165
Jonah Bishop Avatar answered Oct 11 '22 12:10

Jonah Bishop