Command inside for loop in a batch file is not working.
-
Tuesday, November 16, 2010 12:51 AM
Hi All,
Can anyone shed any light why the follwoing line would work on machine but not on another:
for /f "tokens=2 delims=: " %%i in ('dir .') do set _OS_BUILDNUMBER=%%i
I get this error while execuing this from a file containing only this line:
C:\Users\User1>temp.cmd
C:\Users\User1>for /F "tokens=2 delims=: " %i in ('dir') do set _OS_BUILDNUMBER=%i
'dir' is not recognized as an internal or external command,
operable program or batch file.But it works fine in another machine with same OS version.
Thanks. Any help is aprreciated.
PS.
This is just an example. Practical applicability of the line is not expressed here.
All Replies
-
Thursday, January 17, 2013 7:01 PM
My only guess is that extensions have been disabled on the non-working machine.
setlocal /? has a code snippet that can be used to check whether extensions are enabled or not.
The SETLOCAL command will set the ERRORLEVEL value if given an argument. It will be zero if one of the two valid arguments is given and one otherwise. You can use this in batch scripts to determine if the extensions are available, using the following technique: VERIFY OTHER 2>nul SETLOCAL ENABLEEXTENSIONS IF ERRORLEVEL 1 echo Unable to enable extensions
There is also more info in cmd /?
Command Extensions are enabled by default. You may also disable extensions for a particular invocation by using the /E:OFF switch. You can enable or disable extensions for all invocations of CMD.EXE on a machine and/or user logon session by setting either or both of the following REG_DWORD values in the registry using REGEDT32.EXE: HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions and/or HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions to either 0x1 or 0x0. The user specific setting takes precedence over the machine setting. The command line switches take precedence over the registry settings.

