I have a program inside a folder like below. The objective is to have a link in the utilities folder so I can call it from any command line.
C:\Utilities\Program\ program.exe some.important.dll some.important.ini
Is it possible to create a link, symbolic link or hard link in the Utilities folder that can run the file as if its inside the Program folder? When I create the symlink, the program does not locate its dll/ini files. When I create a .lnk, I can't run it from command line by just typing "program", e.g. in PowerShell, cmd or Run.
C:\Utilities\ program <--------- should be the link
I need the link because my environment PATH will include only the Utilities folder, so I don't want to append a new folder to the PATH every time I add a new Program folder, I would like just to create a new [hard/sym]link.
Best Answer
Unfortunately I cant comment to answers. So I have to write a new one.
If you want to use the comand to the program native in the commandline then dont use the command @Start.
With this all parameters are piped to the original program and all outputs are piped to the calling commandline. With an entry of the utility Directory in the path you can use it in cmd, powershell and run-dialog.
In this answere here, the technique is described, too.
PS: Just use .cmd instead of .bat to differentiate optically the shortcut from an normal batch file. The usage is the same.
EDIT: After testing I realized that the called programm does not recognizes needed files in the same folder (as wanted from the question opener). So a more complex script (all in batch) is needed to change to the programms folder, then execute und than changes dir back.
The only thing you have to change in the script is the
progpath
variable to the wanted program. Of course you can skip all theREM
-commands too (only commenting the code).Heres the script:
For easily creating the file in the utilities dir use another script and place it in the utilities dir (for easy access). I named it makeshortcut.bat. Usage is:
makeshortcut "full\path\to\file"
. Just change the variableutilitypath
to your folder.WARNING: No checks of arguments are made. Existing files are overwritten.