Richard
Richard

Reputation:

DOS system path

Is there a way to programmatically, through a batch file (or powershell script), put all folders in c:\Program Files into the system variable PATH? I'm dependent on the command line and really want to just start a program from the command line.

Yes, I'm jealous of Linux shells.

Upvotes: 4

Views: 664

Answers (2)

Rob Williams
Rob Williams

Reputation: 7921

Doing this is very likely to break your computer, in the sense of invoking DLL Hell. As you invoke each executable, the OS will look through each directory in PATH to find each DLL or even EXE referenced by that executable. It becomes highly likely that the OS will find the wrong ones as you add more directories to the PATH.

So, a best practice is to avoid increasing the PATH, and even to decrease it. Rather than implicit dependencies, make them explicit.

Instead, I recommend this approach:

  1. Create a bin directory within your user home directory
  2. Add that bin directory to your user PATH variable
  3. Create a Windows CMD script in the bin directory for each application that you want to invoke from the command line (same name as the executable that you would type)
  4. In each script, invoke SetLocal, add the application's install directory (under %ProgramFiles%) to the PATH, then invoke the executable with the arguments from the command line
  5. Remove the relevant directory from the PATH, so that this script becomes the only way to invoke the executable

Upvotes: 5

Greg Hurlman
Greg Hurlman

Reputation: 17804

Passing in "C:\Program Files" as a parameter into this batch file:

@echo off

FOR /D %%G IN (%1\*) DO PATH "%%G";%path%

Upvotes: 6

Related Questions