Get MAC Address in DOS for loop syntax not working as in XP
#1
Posted 11 May 2004 - 07:02 PM
for /f "tokens=1,2* delims=- " %%1 in ('nbmac') do @echo %%1 %%2
nbmac is a application which i use to retrieve my network card mac address. your guiden is appreciate.thank you.
#2
Posted 11 May 2004 - 07:05 PM
http://www.practical...rt/winipcfg.htm
And if you want to log what it returns:
Replace <command> with one of winipcfg's commands!
winipcfg <command> >> c:\log.txt
That 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...
#3
Posted 11 May 2004 - 11:04 PM
#4
Posted 12 May 2004 - 12:39 AM
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.
#5
Posted 12 May 2004 - 02:08 PM
REM ============================================================== REM Attempt to connect to the network 5 times. Generate a new REM random name each time in case we conflict with someone else. REM Wait longer and longer each time we try. REM ============================================================== REM 111111111111111111111111111111 ewc #V#=0B - First attempt ...#=07 COMPNAME.EXE > NUL GSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" %RAMDRIVE%\LANMAN\SYSTEM.TMP %RAMDRIVE%\LANMAN\SYSTEM.INI > NUL NET START > NUL if errorlevel 1 goto logon REM 222222222222222222222222222222 ewc #=0B - Second attempt ...#=07#+1+ COMPNAME.EXE > NUL GSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" %RAMDRIVE%\LANMAN\SYSTEM.TMP %RAMDRIVE%\LANMAN\SYSTEM.INI > NUL NET START > NUL if errorlevel 1 goto logon REM 333333333333333333333333333333 ewc #=0B - Third attempt ...#=07#+3+ COMPNAME.EXE > NUL GSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" %RAMDRIVE%\LANMAN\SYSTEM.TMP %RAMDRIVE%\LANMAN\SYSTEM.INI > NUL NET START > NUL if errorlevel 1 goto logon REM 444444444444444444444444444444 ewc #=0B - Fourth attempt ...#=07#+5+ COMPNAME.EXE > NUL GSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" %RAMDRIVE%\LANMAN\SYSTEM.TMP %RAMDRIVE%\LANMAN\SYSTEM.INI > NUL NET START > NUL if errorlevel 1 goto logon REM 555555555555555555555555555555 ewc #=0B - Fifth attempt ...#=07#+7+ COMPNAME.EXE > NUL GSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" %RAMDRIVE%\LANMAN\SYSTEM.TMP %RAMDRIVE%\LANMAN\SYSTEM.INI > NUL NET START > NUL if errorlevel 1 goto logon goto netError
Notes:
"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.
#6
Posted 12 May 2004 - 04:24 PM
#7
Posted 12 May 2004 - 04:49 PM
cslee, on May 12 2004, 04:24 PM, said:
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.
#8
Posted 17 May 2004 - 09:07 AM
you need Command Extensions for that (2000+) see for helpquote below
so 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 %%i
gr /\/\o\/\/
-------------------------------
If Command Extensions are enabled, the following additional
forms 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]
#9
Posted 15 June 2004 - 05:11 AM
Dee, on May 12 2004, 02:08 PM, said:
REM ============================================================== REM Attempt to connect to the network 5 times. Generate a new REM random name each time in case we conflict with someone else. REM Wait longer and longer each time we try. REM ============================================================== REM 111111111111111111111111111111 ewc #V#=0B - First attempt ...#=07 COMPNAME.EXE > NUL GSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" %RAMDRIVE%\LANMAN\SYSTEM.TMP %RAMDRIVE%\LANMAN\SYSTEM.INI > NUL NET START > NUL if errorlevel 1 goto logon REM 222222222222222222222222222222 ewc #=0B - Second attempt ...#=07#+1+ COMPNAME.EXE > NUL GSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" %RAMDRIVE%\LANMAN\SYSTEM.TMP %RAMDRIVE%\LANMAN\SYSTEM.INI > NUL NET START > NUL if errorlevel 1 goto logon REM 333333333333333333333333333333 ewc #=0B - Third attempt ...#=07#+3+ COMPNAME.EXE > NUL GSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" %RAMDRIVE%\LANMAN\SYSTEM.TMP %RAMDRIVE%\LANMAN\SYSTEM.INI > NUL NET START > NUL if errorlevel 1 goto logon REM 444444444444444444444444444444 ewc #=0B - Fourth attempt ...#=07#+5+ COMPNAME.EXE > NUL GSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" %RAMDRIVE%\LANMAN\SYSTEM.TMP %RAMDRIVE%\LANMAN\SYSTEM.INI > NUL NET START > NUL if errorlevel 1 goto logon REM 555555555555555555555555555555 ewc #=0B - Fifth attempt ...#=07#+7+ COMPNAME.EXE > NUL GSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" %RAMDRIVE%\LANMAN\SYSTEM.TMP %RAMDRIVE%\LANMAN\SYSTEM.INI > NUL NET START > NUL if errorlevel 1 goto logon goto netError
Notes:
"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 mode
I will post a copy of my autoexec.bat & system.ini can you tell me if they are right
AUTOEXEC.BAT
@ECHO OFF
SET TZ=GHO+00:00
SET PATH=a:\net;a:\;
cd \net
CALL \NET\DOIT.BAT
REM ==============================================================
REM Attempt to connect to the network 5 times. Generate a new
REM random name each time in case we conflict with someone else.
REM Wait longer and longer each time we try.
REM ==============================================================
REM 111111111111111111111111111111
a:\net\ewc #V#=0B - First attempt ...#=07
a:\net\COMPNAME.EXE > NUL
GSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" A:\NET\SYSTEM.TMP A:\NET\SYSTEM.INI > NUL
NET START > NUL
if errorlevel 1 goto logon
REM 222222222222222222222222222222
ewc #=0B - Second attempt ...#=07#+1+
COMPNAME.EXE > NUL
GSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" A:\NET\SYSTEM.TMP A:\NET\SYSTEM.INI > NUL
NET START > NUL
if errorlevel 1 goto logon
REM 333333333333333333333333333333
ewc #=0B - Third attempt ...#=07#+3+
COMPNAME.EXE > NUL
GSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" A:\NET\SYSTEM.TMP A:\NET\SYSTEM.INI > NUL
NET START > NUL
if errorlevel 1 goto logon
REM 444444444444444444444444444444
ewc #=0B - Fourth attempt ...#=07#+5+
COMPNAME.EXE > NUL
GSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" A:\NET\SYSTEM.TMP A:\NET\SYSTEM.INI > NUL
NET START > NUL
if errorlevel 1 goto logon
REM 555555555555555555555555555555
ewc #=0B - Fifth attempt ...#=07#+7+
COMPNAME.EXE > NUL
GSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" A:\NET\SYSTEM.TMP A:\NET\SYSTEM.INI > NUL
NET START > NUL
if errorlevel 1 goto logon
goto netError
:logon
a:\net\netbind.com
a:\net\umb.com
a:\net\tcptsr.exe
a:\net\tinyrfc.exe
a:\net\nmtsr.exe
a:\net\emsbfr.exe
a:\net\net start
A:\NET\NET.EXE USE G: \\ghost\ghost
A:\NET\NET.EXE USE
SYSTEM.INI
[network]
filesharing=no
printsharing=no
autologon=yes
computername=homer
lanroot=a:\net
username=ghost
workgroup=london
reconnect=no
dospophotkey=N
lmlogon=0
logondomain=london
prefferedredir=full
autostart=full
maxconnections=8
[network drivers]
netcard=
transport=tcpdrv.dos,nemm.dos
devdir=a:\net
LoadRMDrivers=yes
[Password Lists]
*Shares=A:\NET\Shares.PW
I 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?
#10
Posted 15 June 2004 - 05:31 AM
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 debt
Mnay thanks
#11
Posted 15 June 2004 - 10:10 AM
cjwallace, on Jun 15 2004, 05:31 AM, said:
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 debt
Mnay thanks
You'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 OFF SET TZ=GHO+00:00 SET PATH=a:\net;a:\; cd \net CALL \NET\DOIT.BAT a:\net\net init a:\net\netbind.com a:\net\umb.com a:\net\tcptsr.exe a:\net\tinyrfc.exe a:\net\nmtsr.exe a:\net\emsbfr.exe REM ============================================================== REM Attempt to connect to the network 5 times. Generate a new REM random name each time in case we conflict with someone else. REM Wait longer and longer each time we try. REM ============================================================== REM 111111111111111111111111111111 a:\net\ewc #V#=0B - First attempt ...#=07 a:\net\COMPNAME.EXE > NUL GSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" A:\NET\SYSTEM.TMP A:\NET\SYSTEM.INI > NUL NET START > NUL if errorlevel 1 goto logon REM 222222222222222222222222222222 ewc #=0B - Second attempt ...#=07#+1+ COMPNAME.EXE > NUL GSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" A:\NET\SYSTEM.TMP A:\NET\SYSTEM.INI > NUL NET START > NUL if errorlevel 1 goto logon REM 333333333333333333333333333333 ewc #=0B - Third attempt ...#=07#+3+ COMPNAME.EXE > NUL GSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" A:\NET\SYSTEM.TMP A:\NET\SYSTEM.INI > NUL NET START > NUL if errorlevel 1 goto logon REM 444444444444444444444444444444 ewc #=0B - Fourth attempt ...#=07#+5+ COMPNAME.EXE > NUL GSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" A:\NET\SYSTEM.TMP A:\NET\SYSTEM.INI > NUL NET START > NUL if errorlevel 1 goto logon REM 555555555555555555555555555555 ewc #=0B - Fifth attempt ...#=07#+7+ COMPNAME.EXE > NUL GSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" A:\NET\SYSTEM.TMP A:\NET\SYSTEM.INI > NUL NET START > NUL if errorlevel 1 goto logon goto netError :logon A:\NET\NET.EXE USE G: \\ghost\ghost A:\NET\NET.EXE USE goto End :netError echo There was an error. :End
Also 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=no printsharing=no autologon=yes computername=**COMPUTERNAME** lanroot=a:\net username=ghost workgroup=london reconnect=no dospophotkey=N lmlogon=0 logondomain=london prefferedredir=full autostart=full maxconnections=8 [network drivers] netcard= transport=tcpdrv.dos,nemm.dos devdir=a:\net LoadRMDrivers=yes [Password Lists] *Shares=A:\NET\Shares.PW
Give 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).
#12
Posted 15 June 2004 - 10:51 AM
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 stops
Do 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
#13
Posted 15 June 2004 - 11:06 AM
Unique Computer Name Generated
This Program Cannot be run in dos mode
There was an error
I 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.6kb
Something 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
#14
Posted 15 June 2004 - 11:37 AM
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 nothing
Do you know what might be up?
Cheers
Craig
#15
Posted 15 June 2004 - 12:27 PM
But thank you so much for your help on this problem
Talk to you soon mate
Craig
#16
Posted 15 June 2004 - 08:23 PM
cjwallace, on Jun 15 2004, 12:27 PM, said:
But thank you so much for your help on this problem
Talk to you soon mate
Craig
All I can suggest is to double check and make sure that your DOS NIC drivers are working. This method works with both Packet and NDIS drivers, so as long as you have one type or the other working you should be good to go.
#17
Posted 17 June 2004 - 11:55 AM
I have managed to get it working. Below is a copy of my autoexec.bat
@ECHO OFF
SET TZ=GHO+00:00
SET PATH=a:\net;a:\;G:\;
cd \net
CALL \NET\DOIT.BAT
a:\net\net init
a:\net\netbind.com
a:\net\umb.com
a:\net\tcptsr.exe
a:\net\tinyrfc.exe
a:\net\nmtsr.exe
a:\net\emsbfr.exe
REM ==============================================================
REM Attempt to connect to the network and generate a new
REM random name each time
REM ==============================================================
REM GENERATING WITHERS COMPUTER NAME
a:\net\ewc #V#=0B - GENERATING WITHERS COMPUTER NAME PLEASE STANDBY...#=07
a:\net\COMPNAME.EXE
a:\net\GSAR.EXE -f "-s**COMPUTERNAME**" "-r%COMPNAME%" A:\NET\SYSTEM.TMP A:\NET\SYSTEM.INI > NUL
NET START
A:\NET\NET.EXE USE G: \\casper\ghost
A:\NET\NET.EXE USE
g:\menu\home.bat
Anyway Many thanks for your help with this i am so over the moon that i have got it to work and we can now log on as many PC as we like and each has a diff computer name. I cant thank you enough
Many thanks for your time and for passing on how to set this up
- ← Error while accessing remote registry keys!
- Windows 95/98/98SE/ME
- Read variable from *.com OR read from file →



Help
Back to top










