What is the correct syntax in a Windows Batch File for IF statements inside a FOR loop using a SET command

I have tried various permutaions of this code including quotes, carets, parentheses, else, etc, all to no avail.  I need %strOption% to be "/readonly" unless specifically one of the three special cases where it will be something else dependant on the path.

Below is the latest failure.

It seems that the SET command does not work even though the IF returns true.

setlocal EnableDelayedExpansion
Set strOption=/readonly

For %%i in (
%SystemRoot%\security
%SystemRoot%
%SystemRoot%\system
%SystemRoot%\system32
%SystemDrive%\
%SystemRoot%\system32\config
%WinDir%\WinSxS\Backup
%SystemRoot%\System32\Winevt\Logs\Security.evtx) DO (

      echo.
      Echo path = %%i
      
IF %%i==%SystemDrive%\ (set strOption=/readcreate)
IF %%i==%SystemRoot%\system32\config (set strOption=/none)
IF %%i==%SystemRoot%\System32\Winevt\Logs\Security.evtx (set strOption=/none)

echo strOption = %strOption%
REM Other Stuff I want to do...
)
jrslimAsked:
Who is Participating?
 
oBdACommented:
The "EnableDelayedExpansion" alone doesn't cut it; you need to use "!" to expand variables delayed:
For %%i in (
%SystemRoot%\security 
%SystemRoot% 
%SystemRoot%\system 
%SystemRoot%\system32 
%SystemDrive%\
%SystemRoot%\system32\config
%WinDir%\WinSxS\Backup
%SystemRoot%\System32\Winevt\Logs\Security.evtx) DO (

      echo.
      Echo path = %%i
      
IF %%i==%SystemDrive%\ (set strOption=/readcreate)
IF %%i==%SystemRoot%\system32\config (set strOption=/none)
IF %%i==%SystemRoot%\System32\Winevt\Logs\Security.evtx (set strOption=/none)

echo strOption = !strOption!
REM Other Stuff I want to do...
)

Open in new window

0
 
jrslimAuthor Commented:
Perfect.  Thanks ObdA
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.