cslee Posted May 12, 2004 Posted May 12, 2004 I have a problem running "for" command in windows 98 command prompt.I have no problem to run this command in windows XP command prompt.but when I try to execute the "for" command through win98 startup disk to boot the system it return syntax error.The following are the "for" command in my batch file:for /f "tokens=1,2* delims=- " %%1 in ('nbmac') do @echo %%1 %%2nbmac is a application which i use to retrieve my network card mac address. your guiden is appreciate.thank you.
gamehead200 Posted May 12, 2004 Posted May 12, 2004 Why not just use winipcfg in Windows 98? It should work fine... http://www.practicallynetworked.com/support/winipcfg.htmAnd if you want to log what it returns:Replace <command> with one of winipcfg's commands! winipcfg <command> >> c:\log.txtThat should log everything that winipcfg returns in c:\log.txt! Edit: My bad, I forgot winipcfg was a GUI interface. I believe ipconfig /all SHOULD still do the trick in Windows 98... I think I remember it being done on TechTV...
cslee Posted May 12, 2004 Author Posted May 12, 2004 I think you have misunderstand what i'm saying.What I like to do is I would like to take the mac address in pure dos and convert it to computer name so it won't have conflict computer name.This thing is apply in my network bootdisk. or do you have any other way to generate random computer name in dos ?
cslee Posted May 12, 2004 Author Posted May 12, 2004 or Maybe I should say I have make a network bootdisk.I like to use the mac address as computer name so that there is not conflict in computer name when there is many computer running together by using the network bootdisk.The "for" which I have place in the previous message was running very well in Windows XP command prompt.But when I try to run it in Win98 bootdisk/MSdos 6.22 ,it show the syntax error. I have totally no ideal on how to correct since I'm very new to batch script ptogramming.I hoping someone could help me to correct it. Thanks.
Dee Posted May 12, 2004 Posted May 12, 2004 I use COMPNAME (search for it on Simtel.net). Because there is a very small chance that the random name generated with this program will be a duplicate of another I simply run net start a few times, running COMPNAME in between each attempt.REM ==============================================================REM Attempt to connect to the network 5 times. Generate a newREM random name each time in case we conflict with someone else.REM Wait longer and longer each time we try.REM ============================================================== REM 111111111111111111111111111111ewc #V#=0B - First attempt ...#=07COMPNAME.EXE > NULGSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" %RAMDRIVE%\LANMAN\SYSTEM.TMP %RAMDRIVE%\LANMAN\SYSTEM.INI > NULNET START > NULif errorlevel 1 goto logon REM 222222222222222222222222222222ewc #=0B - Second attempt ...#=07#+1+COMPNAME.EXE > NULGSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" %RAMDRIVE%\LANMAN\SYSTEM.TMP %RAMDRIVE%\LANMAN\SYSTEM.INI > NULNET START > NULif errorlevel 1 goto logon REM 333333333333333333333333333333ewc #=0B - Third attempt ...#=07#+3+COMPNAME.EXE > NULGSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" %RAMDRIVE%\LANMAN\SYSTEM.TMP %RAMDRIVE%\LANMAN\SYSTEM.INI > NULNET START > NULif errorlevel 1 goto logon REM 444444444444444444444444444444ewc #=0B - Fourth attempt ...#=07#+5+COMPNAME.EXE > NULGSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" %RAMDRIVE%\LANMAN\SYSTEM.TMP %RAMDRIVE%\LANMAN\SYSTEM.INI > NULNET START > NULif errorlevel 1 goto logon REM 555555555555555555555555555555ewc #=0B - Fifth attempt ...#=07#+7+COMPNAME.EXE > NULGSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" %RAMDRIVE%\LANMAN\SYSTEM.TMP %RAMDRIVE%\LANMAN\SYSTEM.INI > NULNET START > NULif errorlevel 1 goto logon goto netErrorNotes:"ewc" is used for visual formatting and for inserting an increasing delay in seconds between attempts. Can be found on Simtel.net."gsar" is used to search and replace text in text files, in this case my system.ini file. Can be found on SourceForge.The DOS version of net start actually initializes networking, unlike the Windows version which lists running services.The example above jumps to the "logon" label if an attempt is successful, otherwise it retries a number of times before finally failing and jumping to the "netError" label.This method hasn't failed yet on the (literally) thousands of times it's been used by myself or my co-workers.
cslee Posted May 12, 2004 Author Posted May 12, 2004 Even this is working but I do think this is not a very good ideal and working for me,since my program will initiliaze the computer name before connect to network. So I hope it would be better to use mac address as computer in dos since mac address for each network card is very unique.So does any one know well in batch script for "FOR" command for windows 98/MSDOS 6.22.
Dee Posted May 12, 2004 Posted May 12, 2004 Even this is working but I do think this is not a very good ideal and working for me,since my program will initiliaze the computer name before connect to network. So I hope it would be better to use mac address as computer in dos since mac address for each network card is very unique.So does any one know well in batch script for "FOR" command for windows 98/MSDOS 6.22.Of course what you do is up to you, but I must point out that the script snippet I posted does initialize the computer name before connecting to the network. In fact it does exactly what you're asking for. Especially considering the "for" command in DOS does not have nearly as much functionality as the Win2K/XP version does and as such your method as posted will most likely not work under DOS.
/\/\o\/\/ Posted May 17, 2004 Posted May 17, 2004 the /F parameter is the problem in the for-loop,you need Command Extensions for that (2000+) see for helpquote belowso if you can manage to live without the options section (do the lineprocessing in the called command) you still can use FOR (looks like you just append the 2 variables to 1 again anyway)for %%i in ('nbmac') do @echo %%igr /\/\o\/\/-------------------------------If Command Extensions are enabled, the following additionalforms of the FOR command are supported:FOR /D %variable IN (set) DO command [command-parameters] If set contains wildcards, then specifies to match against directory names instead of file names.FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters] Walks the directory tree rooted at [drive:]path, executing the FOR statement in each directory of the tree. If no directory specification is specified after /R then the current directory is assumed. If set is just a single period (.) character then it will just enumerate the directory tree.FOR /L %variable IN (start,step,end) DO command [command-parameters] The set is a sequence of numbers from start to end, by step amount. So (1,1,5) would generate the sequence 1 2 3 4 5 and (5,-1,1) would generate the sequence (5 4 3 2 1)FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
cjwallace Posted June 15, 2004 Posted June 15, 2004 I use COMPNAME (search for it on Simtel.net). Because there is a very small chance that the random name generated with this program will be a duplicate of another I simply run net start a few times, running COMPNAME in between each attempt.REM ==============================================================REM Attempt to connect to the network 5 times. Generate a newREM random name each time in case we conflict with someone else.REM Wait longer and longer each time we try.REM ==============================================================REM 111111111111111111111111111111ewc #V#=0B - First attempt ...#=07COMPNAME.EXE > NULGSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" %RAMDRIVE%\LANMAN\SYSTEM.TMP %RAMDRIVE%\LANMAN\SYSTEM.INI > NULNET START > NULif errorlevel 1 goto logonREM 222222222222222222222222222222ewc #=0B - Second attempt ...#=07#+1+COMPNAME.EXE > NULGSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" %RAMDRIVE%\LANMAN\SYSTEM.TMP %RAMDRIVE%\LANMAN\SYSTEM.INI > NULNET START > NULif errorlevel 1 goto logonREM 333333333333333333333333333333ewc #=0B - Third attempt ...#=07#+3+COMPNAME.EXE > NULGSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" %RAMDRIVE%\LANMAN\SYSTEM.TMP %RAMDRIVE%\LANMAN\SYSTEM.INI > NULNET START > NULif errorlevel 1 goto logonREM 444444444444444444444444444444ewc #=0B - Fourth attempt ...#=07#+5+COMPNAME.EXE > NULGSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" %RAMDRIVE%\LANMAN\SYSTEM.TMP %RAMDRIVE%\LANMAN\SYSTEM.INI > NULNET START > NULif errorlevel 1 goto logonREM 555555555555555555555555555555ewc #=0B - Fifth attempt ...#=07#+7+COMPNAME.EXE > NULGSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" %RAMDRIVE%\LANMAN\SYSTEM.TMP %RAMDRIVE%\LANMAN\SYSTEM.INI > NULNET START > NULif errorlevel 1 goto logongoto netErrorNotes:"ewc" is used for visual formatting and for inserting an increasing delay in seconds between attempts. Can be found on Simtel.net."gsar" is used to search and replace text in text files, in this case my system.ini file. Can be found on SourceForge.The DOS version of net start actually initializes networking, unlike the Windows version which lists running services.The example above jumps to the "logon" label if an attempt is successful, otherwise it retries a number of times before finally failing and jumping to the "netError" label.This method hasn't failed yet on the (literally) thousands of times it's been used by myself or my co-workers.Hi there, i really like this script if only i could get it to work.When i run the script i get an error can not bind twice in static modeI will post a copy of my autoexec.bat & system.ini can you tell me if they are rightAUTOEXEC.BAT@ECHO OFFSET TZ=GHO+00:00SET PATH=a:\net;a:\;cd \netCALL \NET\DOIT.BATREM ==============================================================REM Attempt to connect to the network 5 times. Generate a newREM random name each time in case we conflict with someone else.REM Wait longer and longer each time we try.REM ==============================================================REM 111111111111111111111111111111a:\net\ewc #V#=0B - First attempt ...#=07a:\net\COMPNAME.EXE > NULGSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" A:\NET\SYSTEM.TMP A:\NET\SYSTEM.INI > NULNET START > NULif errorlevel 1 goto logonREM 222222222222222222222222222222ewc #=0B - Second attempt ...#=07#+1+COMPNAME.EXE > NULGSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" A:\NET\SYSTEM.TMP A:\NET\SYSTEM.INI > NULNET START > NULif errorlevel 1 goto logonREM 333333333333333333333333333333ewc #=0B - Third attempt ...#=07#+3+COMPNAME.EXE > NULGSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" A:\NET\SYSTEM.TMP A:\NET\SYSTEM.INI > NULNET START > NULif errorlevel 1 goto logonREM 444444444444444444444444444444ewc #=0B - Fourth attempt ...#=07#+5+COMPNAME.EXE > NULGSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" A:\NET\SYSTEM.TMP A:\NET\SYSTEM.INI > NULNET START > NULif errorlevel 1 goto logonREM 555555555555555555555555555555ewc #=0B - Fifth attempt ...#=07#+7+COMPNAME.EXE > NULGSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" A:\NET\SYSTEM.TMP A:\NET\SYSTEM.INI > NULNET START > NULif errorlevel 1 goto logongoto netError:logona:\net\netbind.coma:\net\umb.coma:\net\tcptsr.exea:\net\tinyrfc.exea:\net\nmtsr.exea:\net\emsbfr.exea:\net\net startA:\NET\NET.EXE USE G: \\ghost\ghostA:\NET\NET.EXE USESYSTEM.INI[network]filesharing=noprintsharing=noautologon=yescomputername=homerlanroot=a:\netusername=ghostworkgroup=londonreconnect=nodospophotkey=Nlmlogon=0logondomain=londonprefferedredir=fullautostart=fullmaxconnections=8[network drivers]netcard=transport=tcpdrv.dos,nemm.dosdevdir=a:\netLoadRMDrivers=yes[Password Lists]*Shares=A:\NET\Shares.PWI really need to get this DOS boot disk to change the computer name each time and your script id the closeest i have seen to doing it.Can you help me out at all?
cjwallace Posted June 15, 2004 Posted June 15, 2004 Oh and the batch file only seems to try once i only see First attempt then it moves on.could you email me a copy of your batch file & system.ini file so i can see how you have put it together. i will be forever in your debtMnay thanks
Dee Posted June 15, 2004 Posted June 15, 2004 Oh and the batch file only seems to try once i only see First attempt then it moves on.could you email me a copy of your batch file & system.ini file so i can see how you have put it together. i will be forever in your debtMnay thanksYou've got some things backwards. The section in your "autoexec.bat" that starts at ":login" should happen before you try to connect to the network. Also get rid of that extra "net start" and try running "net init" before hand.Eg. AUTOEXEC.BAT@ECHO OFFSET TZ=GHO+00:00SET PATH=a:\net;a:\;cd \netCALL \NET\DOIT.BATa:\net\net inita:\net\netbind.coma:\net\umb.coma:\net\tcptsr.exea:\net\tinyrfc.exea:\net\nmtsr.exea:\net\emsbfr.exeREM ==============================================================REM Attempt to connect to the network 5 times. Generate a newREM random name each time in case we conflict with someone else.REM Wait longer and longer each time we try.REM ==============================================================REM 111111111111111111111111111111a:\net\ewc #V#=0B - First attempt ...#=07a:\net\COMPNAME.EXE > NULGSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" A:\NET\SYSTEM.TMP A:\NET\SYSTEM.INI > NULNET START > NULif errorlevel 1 goto logonREM 222222222222222222222222222222ewc #=0B - Second attempt ...#=07#+1+COMPNAME.EXE > NULGSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" A:\NET\SYSTEM.TMP A:\NET\SYSTEM.INI > NULNET START > NULif errorlevel 1 goto logonREM 333333333333333333333333333333ewc #=0B - Third attempt ...#=07#+3+COMPNAME.EXE > NULGSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" A:\NET\SYSTEM.TMP A:\NET\SYSTEM.INI > NULNET START > NULif errorlevel 1 goto logonREM 444444444444444444444444444444ewc #=0B - Fourth attempt ...#=07#+5+COMPNAME.EXE > NULGSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" A:\NET\SYSTEM.TMP A:\NET\SYSTEM.INI > NULNET START > NULif errorlevel 1 goto logonREM 555555555555555555555555555555ewc #=0B - Fifth attempt ...#=07#+7+COMPNAME.EXE > NULGSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" A:\NET\SYSTEM.TMP A:\NET\SYSTEM.INI > NULNET START > NULif errorlevel 1 goto logongoto netError:logonA:\NET\NET.EXE USE G: \\ghost\ghostA:\NET\NET.EXE USEgoto End:netErrorecho There was an error.:EndAlso if you're going to use my script exactly at worded then you need to rename your "system.ini" to "system.tmp" and replace the computer name in the file with "**COMPUTERNAME**" (which is replaced by gsar in the script).Eg. SYSTEM.TMP[network]filesharing=noprintsharing=noautologon=yescomputername=**COMPUTERNAME**lanroot=a:\netusername=ghostworkgroup=londonreconnect=nodospophotkey=Nlmlogon=0logondomain=londonprefferedredir=fullautostart=fullmaxconnections=8[network drivers]netcard=transport=tcpdrv.dos,nemm.dosdevdir=a:\netLoadRMDrivers=yes[Password Lists]*Shares=A:\NET\Shares.PWGive it another try and let us know how it goes. I'll help you if I can. I'd rather not post my own batch files and ini files as that would add another layer of complexity to what you're doing (my network Ghost disk is very elaborate).
cjwallace Posted June 15, 2004 Posted June 15, 2004 Thank you so much for your reply. I have changed the files as you said.It loads everything up ok the it starts to go through the 1,2,3,4,5 attempt then just displays there was an error and the batch file stopsDo you know what might be up?Thank you so so so so so so much for your help on this i cant thank you enough
cjwallace Posted June 15, 2004 Posted June 15, 2004 i took off the > NUL just so i could see what it is up to and when it runs it saysUnique Computer Name GeneratedThis Program Cannot be run in dos modeThere was an errorI downloaded all the files you said on your post. do you think i have the wrong gsar.exe? the gsar.exe i have is 32.6kbSomething is defo wrong. but i am so happy as i am 99% closer to achiving what i have been doing for the last few months. i can see a light at the end of the tunnel. Thanks again for all your help so far
cjwallace Posted June 15, 2004 Posted June 15, 2004 Ignore that last post. I downloaded gsar111.zip but that had the wrong gsar.exe so i then downloaded gsar110.zip and this seems to be better.The issue i have now is that when i boot up with the disk everything is ok it gets the first attempt and then just sits there doing nothingDo you know what might be up?CheersCraig
cjwallace Posted June 15, 2004 Posted June 15, 2004 Right i am off home for the day mate. Could you please post as much info as you think would help me sort this issue out. I will prob be in bed when you are most of the way through your day what with the time diffBut thank you so much for your help on this problemTalk to you soon mateCraig
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now