Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 4507
  • Last Modified:

MS-DOS bat file - regedit seeting

Hi all,

I wrote a .bat file which does the below settings automatically and it works fine.

.bat file looks like the below.
-------------
REG DELETE "HKLM\Software\Classes\Excel.Sheet.8" /f /v BrowserFlags
REG ADD "HKLM\Software\Classes\Excel.Sheet.8" /v BrowserFlags /t REG_DWORD /d 0
NET USE X: \\server\directory /y
-------------


It does the following automatically:
-----------------------------
1. Start Registry Editor (Regedt32.exe).
2. Locate and then click the following registry key:
   HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Excel.Sheet.5
3. After you identify the subkey for the specific Office document type,
   add the following value for all subkeys
   Value name: BrowserFlags
   Data type: REG_DWORD
   Value: 8
4. Click OK, and then quit Registry Editor.
-----------------------------

Question:
I want to add some condition to this bat file.
That is if the above regedit setting already exists, do not do anything. Simply exit.
Also if a specific (say X:) map drive already exists, I wan to skip that too.

Is it possible?

Thanks
0
aarch1
Asked:
aarch1
  • 2
  • 2
3 Solutions
 
souseranCommented:
The IF command would be the thing you want. It performs conditional processing in batch programs. More information on it can be found here:

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true

Applied to your batch file:

If exist "HKLM\Software\Classes\Excel.Sheet.8" /f /v BrowserFlags
REG DELETE "HKLM\Software\Classes\Excel.Sheet.8" /f /v BrowserFlags
REG ADD "HKLM\Software\Classes\Excel.Sheet.8" /v BrowserFlags /t REG_DWORD /d 0
else goto [SHARE]

[SHARE]

If exist X: go to END else

NET USE X: \\server\directory /y

[END]

It's been a while since I've written batch files, so check my syntax, but that's the gist of it.

0
 
oBdACommented:
Querying for the registry key to be set before changing it doesn't save a lot of time; you can just set it everytime.
You don't need to delete it first, though; just overwrite it (just add the /f in the "reg add" line).
As far as the network mapping is concerned, you should check if X: is mapped to the *correct* share, not only whether it exists.

souseran,
- Labels in batch begin with a colon.
- "if exist" only works for files, not for registry keys ("help if" for details)
- if and else have to be on the same line in batch ("help if" for details)

reg add "HKLM\Software\Classes\Excel.Sheet.8" /v BrowserFlags /t REG_DWORD /d 0 /f
net use X: | find /i "\\server\directory" >NUL
if errorlevel 1 (
  net use X: /delete
  net use X: \\server\directory /persistent:yes
)

Open in new window

0
 
souseranCommented:
@oBdA,

Thanks for the correction. As I said, it's been a while. :-)

souseran
0
 
aarch1Author Commented:
oBdA:

Perfect. Thanks for the quick response.

One more question though.
When I run this .bat file from browser, it shows the popup with run, save, cancel button.
After clicking the run button, this .bat runs.

Is there a way to always run the .bat file without this pop?

Your thoughts?

Thanks
0
 
oBdACommented:
You need to add the server on which the batch is stored to the Local Intranet sites in the Internet Explorer settings.
0

Featured Post

Restore individual SQL databases with ease

Veeam Explorer for Microsoft SQL Server delivers an easy-to-use, wizard-driven interface for restoring your databases from a backup. No expert SQL background required. Web interface provides a complete view of all available SQL databases to simplify the recovery of lost database

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now