Link to home
Start Free TrialLog in
Avatar of z0ner
z0ner

asked on

Batch file only runs at command prompt. Run through Explorer causes obscure error.

I haven't tried other batch files on our customers server yet, but a simple batch file that runs INSTALL.EXE (a VB app) with a few parameters, where all files are located in the same folder, causes a type of "file not found" error with the exact verbiage of :

"Cannot find the file 'C:\temp\xxxxx.bat' (or one of its components). Make sure the path and filename are correct and that all required libraries are available."  

How can it not FIND the file when I'm double-clicking on it to generate this message LOL.  The account is Administrator and the files do not have any special security on them.  If I install the program on my own workstation using various operating systems including Windows 2000 they work fine.  This is our only customer who's run into this so far.  In all my years of experience (18+) I haven't run across this before.  It seems as if there's something affecting the OS as to not let it run BAT files from within the OS.

If I shell out to a command prompt and CD to the directory to run the BAT file, it works fine.  This would normally be a perfectly fine work-around, but I feel that the root cause is affecting one of my other VB apps that also shells to DOS to run instructions.
Avatar of _nn_
_nn_

A few things you could check :
- in My Computer / Properties / Advanced / Environment Variables : is the ComSpec one correct in the system group ?
- type 'assoc' in a cmd window, does it have '.bat=batfile' and '.cmd=cmdfile' lines ?
- does the registry look normal in HKCR\batfile\shell\open\command ?
Avatar of Netman66
Check the file association for the .bat extension.

To test if it is the association change the extension to .cmd and try it.

Advise.
It sounds like the "or one of its components" is the likely culprit. When you open a CMD window, you pass whole set of environment variables to all command that you run. One, some, or all of these may not be getting passed correctly to the batch script you are trying to run.

Here are a couple of things to do:

1) Make sure that everything in the script contains full paths. Don't rely on the environment variables to allow the script to find files that are on the path.

2) Expand the variables that you need in the script before executing any commands.

3) Change directories within the script to ensure that you are running the commands within the right "contexts".
I agree with the above.....wherever you reference other files in the script, define the whole path. for instance, rather than  INSTALL.EXE have it be C:\DIRNAME\INSTALL.EXE

Also, you are double-clicking the actual file, and not a shortcut or something?
Avatar of z0ner

ASKER

Finally figured out what happened.  Unknown to the customer, a previous tech had renamed CMD.EXE to "DosBox.EXE".  This caused the install.bat file to choke, as well as our VB app that was hard-coded for CMD.EXE.  I guess you can't assume anything nowadays :-)
ASKER CERTIFIED SOLUTION
Avatar of SpazMODic
SpazMODic

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial