Solved

detect cd

Posted on 2008-10-17
12
562 Views
Last Modified: 2012-06-27
batch file code that when run detect whether there is cd /dvd in cd/dvd drive of system or not and if it exists pop up message "cd exist".
0
Comment
Question by:ankur3020
  • 6
  • 6
12 Comments
 
LVL 5

Expert Comment

by:PaulKeating
Comment Utility
Since nobody has come up with positive answers to your questions, here is what you probably did not want to hear. Three times over: three negative answers for the price of one.

You can't do any of these things in DOS.If you're interested in a Windows Scripting Host solution, then that might be possible. The trouble with WSH is that every user has a different version, which means that things that work perfectly on your machine may give a runtime error on your user's machine; and Vista is another story entirely.

I'm guessing here, but I suspect that you want this for an install, because otherwise you would not be wanting to enumerate the host machine's drives. You simply can't write a proper install in Windows batch. It's nowhere near powerful enough. For a free and quite capable (if somewhat under-documented and exceedingly hard-to-learn) install system try Nullsoft Install at http://nsis.sf.net.
0
 

Author Comment

by:ankur3020
Comment Utility
pls give vbs code then
0
 
LVL 5

Expert Comment

by:PaulKeating
Comment Utility
Here it is
strComputer = "."

Set objWMIService = GetObject("winmgmts:"  & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colDisks = objWMIService.ExecQuery ("SELECT * FROM Win32_LogicalDisk")

For Each objDisk in colDisks

 if objDisk.DriveType = 5 Then

 Wscript.Echo "DeviceID "& objDisk.DeviceID & " is a CD." 

 End if

Next

Open in new window

0
 

Author Comment

by:ankur3020
Comment Utility
your code is pop up message that is specifying cd drive name not whether it has cd in drive or not. pls amend it
0
 
LVL 5

Expert Comment

by:PaulKeating
Comment Utility
I thought you would be able to manage that on your own.
strComputer = "."

Set objWMIService = GetObject("winmgmts:"  & "{impersonationLevel=impersonate}!\\" & 
 

strComputer & "\root\cimv2")

Set colDisks = objWMIService.ExecQuery ("SELECT * FROM Win32_LogicalDisk")

For Each objDisk in colDisks

 if objDisk.DriveType = 5 Then

 Wscript.Echo "There is a CD." 

 Exit for

 End if

Next

Open in new window

0
 

Author Comment

by:ankur3020
Comment Utility
above code is giving syntax error at line 2 pls check
0
What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 
LVL 5

Expert Comment

by:PaulKeating
Comment Utility
It i's giving a syntax error because 2 linebreaks got introduced while cutting and pasting. Replace lines 2-4 with the original line 2 and it works.

strComputer = "."

Set objWMIService = GetObject("winmgmts:"  & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colDisks = objWMIService.ExecQuery ("SELECT * FROM Win32_LogicalDisk")

For Each objDisk in colDisks

 if objDisk.DriveType = 5 Then

 Wscript.Echo "There is a CD." 

 Exit for

 End if

Next

Open in new window

0
 

Author Comment

by:ankur3020
Comment Utility
i tried ur code, it is not working properly. there was no cd in cd rom, still it was saying there is cd" why so? pls recheck it.
0
 
LVL 5

Expert Comment

by:PaulKeating
Comment Utility
Sorry, misunderstood the question. That code is checking for the kind of drive (CD, floppy, network, etc). Not for what is in it.
0
 
LVL 5

Accepted Solution

by:
PaulKeating earned 250 total points
Comment Utility
Try this one. It reports on the volume name of the CD. If there is no CD in the drive then the volume name will be empty.

If you don't like the message then substitute

Wscript.Echo "There is a CD." in line 6.

strComputer = "."

Set objWMIService = GetObject("winmgmts:"  & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colDisks = objWMIService.ExecQuery ("SELECT * FROM Win32_LogicalDisk")

For Each objDisk in colDisks

 if objDisk.DriveType = 5 and objDisk.VolumeName <> "" Then

 Wscript.Echo "DeviceID "& objDisk.DeviceID & " is a CD: " & objDisk.VolumeName

 Exit For

 End if

Next

Open in new window

0
 

Author Comment

by:ankur3020
Comment Utility
thanks . it is working fine.
0
 

Author Closing Comment

by:ankur3020
Comment Utility
thanks
0

Featured Post

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Suggested Solutions

Using dates in 'DOS' batch files has always been tricky as it has no built in ways of extracting date information.  There are many tricks using string manipulation to pull out parts of the %date% variable or output of the date /t command but these r…
VALIDATING DATES One method of validating dates is to jam the date into the DATE command and see if it accepts it by examining the system's errorlevel value. A non-zero result indicates failure. A typical example might look something like the fol…
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…
This tutorial demonstrates a quick way of adding group price to multiple Magento products.

728 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

8 Experts available now in Live!

Get 1:1 Help Now