How to create a link to an executable which must be run in its own folder?
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:UtilitiesProgram
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.
windows command-line symbolic-link
add a comment |
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:UtilitiesProgram
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.
windows command-line symbolic-link
As you said, the problem is the program won't be able to find its config files or dependencies. Probably the best approach here is to use batch. For example C:Utilitiesprogram.bat with content@start "" /D "%~dp0Program" program.exe %*
.
– Vlastimil Ovčáčík
Aug 16 '13 at 12:20
I'll keep the batch approach for the while, but one of the drawbacks is for example: I can't have the program output in the current terminal (cmd/Powershell). Suppose I want to callprogram --help
to print its usage info - it will only flash a cmd window and will not display the usage.
– natenho
Aug 16 '13 at 12:44
1
how about@start "" /B /D "%~dp0Program" program.exe %*
?
– Vlastimil Ovčáčík
Aug 17 '13 at 18:45
/B switch helps the output but still batch can't solve seamlessly, you know? I'm still believing that it must have a simple way to get it working.
– natenho
Aug 18 '13 at 1:54
add a comment |
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:UtilitiesProgram
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.
windows command-line symbolic-link
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:UtilitiesProgram
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.
windows command-line symbolic-link
windows command-line symbolic-link
asked Aug 15 '13 at 22:13
natenhonatenho
13117
13117
As you said, the problem is the program won't be able to find its config files or dependencies. Probably the best approach here is to use batch. For example C:Utilitiesprogram.bat with content@start "" /D "%~dp0Program" program.exe %*
.
– Vlastimil Ovčáčík
Aug 16 '13 at 12:20
I'll keep the batch approach for the while, but one of the drawbacks is for example: I can't have the program output in the current terminal (cmd/Powershell). Suppose I want to callprogram --help
to print its usage info - it will only flash a cmd window and will not display the usage.
– natenho
Aug 16 '13 at 12:44
1
how about@start "" /B /D "%~dp0Program" program.exe %*
?
– Vlastimil Ovčáčík
Aug 17 '13 at 18:45
/B switch helps the output but still batch can't solve seamlessly, you know? I'm still believing that it must have a simple way to get it working.
– natenho
Aug 18 '13 at 1:54
add a comment |
As you said, the problem is the program won't be able to find its config files or dependencies. Probably the best approach here is to use batch. For example C:Utilitiesprogram.bat with content@start "" /D "%~dp0Program" program.exe %*
.
– Vlastimil Ovčáčík
Aug 16 '13 at 12:20
I'll keep the batch approach for the while, but one of the drawbacks is for example: I can't have the program output in the current terminal (cmd/Powershell). Suppose I want to callprogram --help
to print its usage info - it will only flash a cmd window and will not display the usage.
– natenho
Aug 16 '13 at 12:44
1
how about@start "" /B /D "%~dp0Program" program.exe %*
?
– Vlastimil Ovčáčík
Aug 17 '13 at 18:45
/B switch helps the output but still batch can't solve seamlessly, you know? I'm still believing that it must have a simple way to get it working.
– natenho
Aug 18 '13 at 1:54
As you said, the problem is the program won't be able to find its config files or dependencies. Probably the best approach here is to use batch. For example C:Utilitiesprogram.bat with content
@start "" /D "%~dp0Program" program.exe %*
.– Vlastimil Ovčáčík
Aug 16 '13 at 12:20
As you said, the problem is the program won't be able to find its config files or dependencies. Probably the best approach here is to use batch. For example C:Utilitiesprogram.bat with content
@start "" /D "%~dp0Program" program.exe %*
.– Vlastimil Ovčáčík
Aug 16 '13 at 12:20
I'll keep the batch approach for the while, but one of the drawbacks is for example: I can't have the program output in the current terminal (cmd/Powershell). Suppose I want to call
program --help
to print its usage info - it will only flash a cmd window and will not display the usage.– natenho
Aug 16 '13 at 12:44
I'll keep the batch approach for the while, but one of the drawbacks is for example: I can't have the program output in the current terminal (cmd/Powershell). Suppose I want to call
program --help
to print its usage info - it will only flash a cmd window and will not display the usage.– natenho
Aug 16 '13 at 12:44
1
1
how about
@start "" /B /D "%~dp0Program" program.exe %*
?– Vlastimil Ovčáčík
Aug 17 '13 at 18:45
how about
@start "" /B /D "%~dp0Program" program.exe %*
?– Vlastimil Ovčáčík
Aug 17 '13 at 18:45
/B switch helps the output but still batch can't solve seamlessly, you know? I'm still believing that it must have a simple way to get it working.
– natenho
Aug 18 '13 at 1:54
/B switch helps the output but still batch can't solve seamlessly, you know? I'm still believing that it must have a simple way to get it working.
– natenho
Aug 18 '13 at 1:54
add a comment |
4 Answers
4
active
oldest
votes
If you create a shortcut there, you would then use the "start in" field in the shortcut to indicate the folder it should run in.
Then, just try start program.lnk and see if that works.
1
Thanks, but when I create a .lnk, I can't run it from command line by just typing "program", the idea is to run it just like I run "notepad" or "calc" for instance, easy as that.
– natenho
Aug 15 '13 at 23:46
How about putting it into a batch file? Would that work?
– Jack
Aug 16 '13 at 13:18
You can notice the drawbacks of batch files approach in the other comments along the question.
– natenho
Aug 16 '13 at 13:35
add a comment |
You could try an MS-Dos batch file, with the same filename (except for the extension) as the program you want to execute.
For example, C:UtilitesProgram.bat
could contain something like:
C:UtilitiesProgramprogram.exe
or
@start "" /D "%~dp0Program" program.exe %*
Then, when you CD to C:Utilities
, you simply type Program
, and the original file you wanted to launch will be launched.
Or, you could program the exe file to be launched from anywhere using the DosKey feature. If you choose to do so, perhaps This article can help you learn to do so.
There's also the option of creating hard/symbolic links to all the other files in the original directory, in addition to the exe file.
You can also copy (or link) the program, and it's files, to your System32 directory. Like DosKey, the latter will allow you to launch the program from anywhere, even in CMD/Run/PowerShell (but not Explorer).
Actually I do the batch alternative, but its not seamless as a simple link. And its not very confortable to have a fast cmd window popping up or flashing in taskbar. Regarding DOSKEY, I can't use it to run outside cmd, like in powershell or start->run, can I? You mentioned anywhere, but it seems doskey is a very old exclusive cmd/ms-dos feature.
– natenho
Aug 16 '13 at 0:33
Sorry, I didn't realize you mentioned using either the Run command, or PowerShell. I thought you were only doing this with the Command Prompt. I've expanded my original answer, providing two more options for you to choose from.
– TSJNachos117
Aug 16 '13 at 1:36
I appreciate your comments, but it seems worst than the batch approach to copy or to link several files - some programs has too many folders/files. I don't need system32 because Utilities is already in PATH environment variable.
– natenho
Aug 16 '13 at 11:31
add a comment |
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.
@"pathtofile/program.exe" %*
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 the REM
-commands too (only commenting the code).
Heres the script:
@ECHO OFF
REM enable local variables
SETLOCAL
REM fullpath of program
SET progpath=C:Dokumente und EinstellungenLukas SeidlerDesktopnotepad
REM save current direcory
SET currpath=%CD%
REM change to drive of prog
FOR %%I IN ("%progpath%") DO (%%~dI)
REM change to path of prog
FOR %%I IN ("%progpath%") DO (CD "%%~pI")
REM execute prog with optional parameters
FOR %%I IN ("%progpath%") DO ("%%~nxI" %*)
REM change to calling drive
FOR %%I IN ("%currpath%") DO (%%~dI)
REM change to calling path
FOR %%I IN ("%currpath%") DO (CD "%%~pnI")
REM disable local variables
ENDLOCAL
REM EOF
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 "fullpathtofile"
. Just change the variable utilitypath
to your folder.
@ECHO OFF
SETLOCAL
SET utilitypath=D:AppsCommonFiles
SET outfile="%utilitypath%%~n1.cmd"
ECHO @ECHO OFF > %outfile%
ECHO SETLOCAL >> %outfile%
ECHO SET progpath=%~f1 >> %outfile%
ECHO SET currpath=^%%CD^%% >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%progpath^%%") DO (^%%^%%~dI) >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%progpath^%%") DO (CD "^%%^%%~pI") >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%progpath^%%") DO ("^%%^%%~nxI" ^%%*) >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%currpath^%%") DO (^%%^%%~dI) >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%currpath^%%") DO (CD "^%%^%%~pnI") >> %outfile%
ECHO ENDLOCAL >> %outfile%
ECHO done.
WARNING: No checks of arguments are made. Existing files are overwritten.
add a comment |
This worked for me when I installed 7z program and wanted to use it in command prompt:
- I installed 7z, then I created a link to the exe file and copied it to windowssystem32 folder.
- I created a 7z.bat file and put one line inside it : 7z.exe.lnk, and copied that file into the windowssystem32 folder.
It then works as you wanted.
Here is an example (sorry for the Danish windows):
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "3"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f632487%2fhow-to-create-a-link-to-an-executable-which-must-be-run-in-its-own-folder%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
4 Answers
4
active
oldest
votes
4 Answers
4
active
oldest
votes
active
oldest
votes
active
oldest
votes
If you create a shortcut there, you would then use the "start in" field in the shortcut to indicate the folder it should run in.
Then, just try start program.lnk and see if that works.
1
Thanks, but when I create a .lnk, I can't run it from command line by just typing "program", the idea is to run it just like I run "notepad" or "calc" for instance, easy as that.
– natenho
Aug 15 '13 at 23:46
How about putting it into a batch file? Would that work?
– Jack
Aug 16 '13 at 13:18
You can notice the drawbacks of batch files approach in the other comments along the question.
– natenho
Aug 16 '13 at 13:35
add a comment |
If you create a shortcut there, you would then use the "start in" field in the shortcut to indicate the folder it should run in.
Then, just try start program.lnk and see if that works.
1
Thanks, but when I create a .lnk, I can't run it from command line by just typing "program", the idea is to run it just like I run "notepad" or "calc" for instance, easy as that.
– natenho
Aug 15 '13 at 23:46
How about putting it into a batch file? Would that work?
– Jack
Aug 16 '13 at 13:18
You can notice the drawbacks of batch files approach in the other comments along the question.
– natenho
Aug 16 '13 at 13:35
add a comment |
If you create a shortcut there, you would then use the "start in" field in the shortcut to indicate the folder it should run in.
Then, just try start program.lnk and see if that works.
If you create a shortcut there, you would then use the "start in" field in the shortcut to indicate the folder it should run in.
Then, just try start program.lnk and see if that works.
answered Aug 15 '13 at 23:31
JackJack
1,05767
1,05767
1
Thanks, but when I create a .lnk, I can't run it from command line by just typing "program", the idea is to run it just like I run "notepad" or "calc" for instance, easy as that.
– natenho
Aug 15 '13 at 23:46
How about putting it into a batch file? Would that work?
– Jack
Aug 16 '13 at 13:18
You can notice the drawbacks of batch files approach in the other comments along the question.
– natenho
Aug 16 '13 at 13:35
add a comment |
1
Thanks, but when I create a .lnk, I can't run it from command line by just typing "program", the idea is to run it just like I run "notepad" or "calc" for instance, easy as that.
– natenho
Aug 15 '13 at 23:46
How about putting it into a batch file? Would that work?
– Jack
Aug 16 '13 at 13:18
You can notice the drawbacks of batch files approach in the other comments along the question.
– natenho
Aug 16 '13 at 13:35
1
1
Thanks, but when I create a .lnk, I can't run it from command line by just typing "program", the idea is to run it just like I run "notepad" or "calc" for instance, easy as that.
– natenho
Aug 15 '13 at 23:46
Thanks, but when I create a .lnk, I can't run it from command line by just typing "program", the idea is to run it just like I run "notepad" or "calc" for instance, easy as that.
– natenho
Aug 15 '13 at 23:46
How about putting it into a batch file? Would that work?
– Jack
Aug 16 '13 at 13:18
How about putting it into a batch file? Would that work?
– Jack
Aug 16 '13 at 13:18
You can notice the drawbacks of batch files approach in the other comments along the question.
– natenho
Aug 16 '13 at 13:35
You can notice the drawbacks of batch files approach in the other comments along the question.
– natenho
Aug 16 '13 at 13:35
add a comment |
You could try an MS-Dos batch file, with the same filename (except for the extension) as the program you want to execute.
For example, C:UtilitesProgram.bat
could contain something like:
C:UtilitiesProgramprogram.exe
or
@start "" /D "%~dp0Program" program.exe %*
Then, when you CD to C:Utilities
, you simply type Program
, and the original file you wanted to launch will be launched.
Or, you could program the exe file to be launched from anywhere using the DosKey feature. If you choose to do so, perhaps This article can help you learn to do so.
There's also the option of creating hard/symbolic links to all the other files in the original directory, in addition to the exe file.
You can also copy (or link) the program, and it's files, to your System32 directory. Like DosKey, the latter will allow you to launch the program from anywhere, even in CMD/Run/PowerShell (but not Explorer).
Actually I do the batch alternative, but its not seamless as a simple link. And its not very confortable to have a fast cmd window popping up or flashing in taskbar. Regarding DOSKEY, I can't use it to run outside cmd, like in powershell or start->run, can I? You mentioned anywhere, but it seems doskey is a very old exclusive cmd/ms-dos feature.
– natenho
Aug 16 '13 at 0:33
Sorry, I didn't realize you mentioned using either the Run command, or PowerShell. I thought you were only doing this with the Command Prompt. I've expanded my original answer, providing two more options for you to choose from.
– TSJNachos117
Aug 16 '13 at 1:36
I appreciate your comments, but it seems worst than the batch approach to copy or to link several files - some programs has too many folders/files. I don't need system32 because Utilities is already in PATH environment variable.
– natenho
Aug 16 '13 at 11:31
add a comment |
You could try an MS-Dos batch file, with the same filename (except for the extension) as the program you want to execute.
For example, C:UtilitesProgram.bat
could contain something like:
C:UtilitiesProgramprogram.exe
or
@start "" /D "%~dp0Program" program.exe %*
Then, when you CD to C:Utilities
, you simply type Program
, and the original file you wanted to launch will be launched.
Or, you could program the exe file to be launched from anywhere using the DosKey feature. If you choose to do so, perhaps This article can help you learn to do so.
There's also the option of creating hard/symbolic links to all the other files in the original directory, in addition to the exe file.
You can also copy (or link) the program, and it's files, to your System32 directory. Like DosKey, the latter will allow you to launch the program from anywhere, even in CMD/Run/PowerShell (but not Explorer).
Actually I do the batch alternative, but its not seamless as a simple link. And its not very confortable to have a fast cmd window popping up or flashing in taskbar. Regarding DOSKEY, I can't use it to run outside cmd, like in powershell or start->run, can I? You mentioned anywhere, but it seems doskey is a very old exclusive cmd/ms-dos feature.
– natenho
Aug 16 '13 at 0:33
Sorry, I didn't realize you mentioned using either the Run command, or PowerShell. I thought you were only doing this with the Command Prompt. I've expanded my original answer, providing two more options for you to choose from.
– TSJNachos117
Aug 16 '13 at 1:36
I appreciate your comments, but it seems worst than the batch approach to copy or to link several files - some programs has too many folders/files. I don't need system32 because Utilities is already in PATH environment variable.
– natenho
Aug 16 '13 at 11:31
add a comment |
You could try an MS-Dos batch file, with the same filename (except for the extension) as the program you want to execute.
For example, C:UtilitesProgram.bat
could contain something like:
C:UtilitiesProgramprogram.exe
or
@start "" /D "%~dp0Program" program.exe %*
Then, when you CD to C:Utilities
, you simply type Program
, and the original file you wanted to launch will be launched.
Or, you could program the exe file to be launched from anywhere using the DosKey feature. If you choose to do so, perhaps This article can help you learn to do so.
There's also the option of creating hard/symbolic links to all the other files in the original directory, in addition to the exe file.
You can also copy (or link) the program, and it's files, to your System32 directory. Like DosKey, the latter will allow you to launch the program from anywhere, even in CMD/Run/PowerShell (but not Explorer).
You could try an MS-Dos batch file, with the same filename (except for the extension) as the program you want to execute.
For example, C:UtilitesProgram.bat
could contain something like:
C:UtilitiesProgramprogram.exe
or
@start "" /D "%~dp0Program" program.exe %*
Then, when you CD to C:Utilities
, you simply type Program
, and the original file you wanted to launch will be launched.
Or, you could program the exe file to be launched from anywhere using the DosKey feature. If you choose to do so, perhaps This article can help you learn to do so.
There's also the option of creating hard/symbolic links to all the other files in the original directory, in addition to the exe file.
You can also copy (or link) the program, and it's files, to your System32 directory. Like DosKey, the latter will allow you to launch the program from anywhere, even in CMD/Run/PowerShell (but not Explorer).
edited Aug 16 '13 at 12:33
Jawa
3,15982435
3,15982435
answered Aug 16 '13 at 0:12
TSJNachos117TSJNachos117
25639
25639
Actually I do the batch alternative, but its not seamless as a simple link. And its not very confortable to have a fast cmd window popping up or flashing in taskbar. Regarding DOSKEY, I can't use it to run outside cmd, like in powershell or start->run, can I? You mentioned anywhere, but it seems doskey is a very old exclusive cmd/ms-dos feature.
– natenho
Aug 16 '13 at 0:33
Sorry, I didn't realize you mentioned using either the Run command, or PowerShell. I thought you were only doing this with the Command Prompt. I've expanded my original answer, providing two more options for you to choose from.
– TSJNachos117
Aug 16 '13 at 1:36
I appreciate your comments, but it seems worst than the batch approach to copy or to link several files - some programs has too many folders/files. I don't need system32 because Utilities is already in PATH environment variable.
– natenho
Aug 16 '13 at 11:31
add a comment |
Actually I do the batch alternative, but its not seamless as a simple link. And its not very confortable to have a fast cmd window popping up or flashing in taskbar. Regarding DOSKEY, I can't use it to run outside cmd, like in powershell or start->run, can I? You mentioned anywhere, but it seems doskey is a very old exclusive cmd/ms-dos feature.
– natenho
Aug 16 '13 at 0:33
Sorry, I didn't realize you mentioned using either the Run command, or PowerShell. I thought you were only doing this with the Command Prompt. I've expanded my original answer, providing two more options for you to choose from.
– TSJNachos117
Aug 16 '13 at 1:36
I appreciate your comments, but it seems worst than the batch approach to copy or to link several files - some programs has too many folders/files. I don't need system32 because Utilities is already in PATH environment variable.
– natenho
Aug 16 '13 at 11:31
Actually I do the batch alternative, but its not seamless as a simple link. And its not very confortable to have a fast cmd window popping up or flashing in taskbar. Regarding DOSKEY, I can't use it to run outside cmd, like in powershell or start->run, can I? You mentioned anywhere, but it seems doskey is a very old exclusive cmd/ms-dos feature.
– natenho
Aug 16 '13 at 0:33
Actually I do the batch alternative, but its not seamless as a simple link. And its not very confortable to have a fast cmd window popping up or flashing in taskbar. Regarding DOSKEY, I can't use it to run outside cmd, like in powershell or start->run, can I? You mentioned anywhere, but it seems doskey is a very old exclusive cmd/ms-dos feature.
– natenho
Aug 16 '13 at 0:33
Sorry, I didn't realize you mentioned using either the Run command, or PowerShell. I thought you were only doing this with the Command Prompt. I've expanded my original answer, providing two more options for you to choose from.
– TSJNachos117
Aug 16 '13 at 1:36
Sorry, I didn't realize you mentioned using either the Run command, or PowerShell. I thought you were only doing this with the Command Prompt. I've expanded my original answer, providing two more options for you to choose from.
– TSJNachos117
Aug 16 '13 at 1:36
I appreciate your comments, but it seems worst than the batch approach to copy or to link several files - some programs has too many folders/files. I don't need system32 because Utilities is already in PATH environment variable.
– natenho
Aug 16 '13 at 11:31
I appreciate your comments, but it seems worst than the batch approach to copy or to link several files - some programs has too many folders/files. I don't need system32 because Utilities is already in PATH environment variable.
– natenho
Aug 16 '13 at 11:31
add a comment |
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.
@"pathtofile/program.exe" %*
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 the REM
-commands too (only commenting the code).
Heres the script:
@ECHO OFF
REM enable local variables
SETLOCAL
REM fullpath of program
SET progpath=C:Dokumente und EinstellungenLukas SeidlerDesktopnotepad
REM save current direcory
SET currpath=%CD%
REM change to drive of prog
FOR %%I IN ("%progpath%") DO (%%~dI)
REM change to path of prog
FOR %%I IN ("%progpath%") DO (CD "%%~pI")
REM execute prog with optional parameters
FOR %%I IN ("%progpath%") DO ("%%~nxI" %*)
REM change to calling drive
FOR %%I IN ("%currpath%") DO (%%~dI)
REM change to calling path
FOR %%I IN ("%currpath%") DO (CD "%%~pnI")
REM disable local variables
ENDLOCAL
REM EOF
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 "fullpathtofile"
. Just change the variable utilitypath
to your folder.
@ECHO OFF
SETLOCAL
SET utilitypath=D:AppsCommonFiles
SET outfile="%utilitypath%%~n1.cmd"
ECHO @ECHO OFF > %outfile%
ECHO SETLOCAL >> %outfile%
ECHO SET progpath=%~f1 >> %outfile%
ECHO SET currpath=^%%CD^%% >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%progpath^%%") DO (^%%^%%~dI) >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%progpath^%%") DO (CD "^%%^%%~pI") >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%progpath^%%") DO ("^%%^%%~nxI" ^%%*) >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%currpath^%%") DO (^%%^%%~dI) >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%currpath^%%") DO (CD "^%%^%%~pnI") >> %outfile%
ECHO ENDLOCAL >> %outfile%
ECHO done.
WARNING: No checks of arguments are made. Existing files are overwritten.
add a comment |
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.
@"pathtofile/program.exe" %*
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 the REM
-commands too (only commenting the code).
Heres the script:
@ECHO OFF
REM enable local variables
SETLOCAL
REM fullpath of program
SET progpath=C:Dokumente und EinstellungenLukas SeidlerDesktopnotepad
REM save current direcory
SET currpath=%CD%
REM change to drive of prog
FOR %%I IN ("%progpath%") DO (%%~dI)
REM change to path of prog
FOR %%I IN ("%progpath%") DO (CD "%%~pI")
REM execute prog with optional parameters
FOR %%I IN ("%progpath%") DO ("%%~nxI" %*)
REM change to calling drive
FOR %%I IN ("%currpath%") DO (%%~dI)
REM change to calling path
FOR %%I IN ("%currpath%") DO (CD "%%~pnI")
REM disable local variables
ENDLOCAL
REM EOF
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 "fullpathtofile"
. Just change the variable utilitypath
to your folder.
@ECHO OFF
SETLOCAL
SET utilitypath=D:AppsCommonFiles
SET outfile="%utilitypath%%~n1.cmd"
ECHO @ECHO OFF > %outfile%
ECHO SETLOCAL >> %outfile%
ECHO SET progpath=%~f1 >> %outfile%
ECHO SET currpath=^%%CD^%% >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%progpath^%%") DO (^%%^%%~dI) >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%progpath^%%") DO (CD "^%%^%%~pI") >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%progpath^%%") DO ("^%%^%%~nxI" ^%%*) >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%currpath^%%") DO (^%%^%%~dI) >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%currpath^%%") DO (CD "^%%^%%~pnI") >> %outfile%
ECHO ENDLOCAL >> %outfile%
ECHO done.
WARNING: No checks of arguments are made. Existing files are overwritten.
add a comment |
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.
@"pathtofile/program.exe" %*
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 the REM
-commands too (only commenting the code).
Heres the script:
@ECHO OFF
REM enable local variables
SETLOCAL
REM fullpath of program
SET progpath=C:Dokumente und EinstellungenLukas SeidlerDesktopnotepad
REM save current direcory
SET currpath=%CD%
REM change to drive of prog
FOR %%I IN ("%progpath%") DO (%%~dI)
REM change to path of prog
FOR %%I IN ("%progpath%") DO (CD "%%~pI")
REM execute prog with optional parameters
FOR %%I IN ("%progpath%") DO ("%%~nxI" %*)
REM change to calling drive
FOR %%I IN ("%currpath%") DO (%%~dI)
REM change to calling path
FOR %%I IN ("%currpath%") DO (CD "%%~pnI")
REM disable local variables
ENDLOCAL
REM EOF
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 "fullpathtofile"
. Just change the variable utilitypath
to your folder.
@ECHO OFF
SETLOCAL
SET utilitypath=D:AppsCommonFiles
SET outfile="%utilitypath%%~n1.cmd"
ECHO @ECHO OFF > %outfile%
ECHO SETLOCAL >> %outfile%
ECHO SET progpath=%~f1 >> %outfile%
ECHO SET currpath=^%%CD^%% >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%progpath^%%") DO (^%%^%%~dI) >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%progpath^%%") DO (CD "^%%^%%~pI") >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%progpath^%%") DO ("^%%^%%~nxI" ^%%*) >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%currpath^%%") DO (^%%^%%~dI) >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%currpath^%%") DO (CD "^%%^%%~pnI") >> %outfile%
ECHO ENDLOCAL >> %outfile%
ECHO done.
WARNING: No checks of arguments are made. Existing files are overwritten.
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.
@"pathtofile/program.exe" %*
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 the REM
-commands too (only commenting the code).
Heres the script:
@ECHO OFF
REM enable local variables
SETLOCAL
REM fullpath of program
SET progpath=C:Dokumente und EinstellungenLukas SeidlerDesktopnotepad
REM save current direcory
SET currpath=%CD%
REM change to drive of prog
FOR %%I IN ("%progpath%") DO (%%~dI)
REM change to path of prog
FOR %%I IN ("%progpath%") DO (CD "%%~pI")
REM execute prog with optional parameters
FOR %%I IN ("%progpath%") DO ("%%~nxI" %*)
REM change to calling drive
FOR %%I IN ("%currpath%") DO (%%~dI)
REM change to calling path
FOR %%I IN ("%currpath%") DO (CD "%%~pnI")
REM disable local variables
ENDLOCAL
REM EOF
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 "fullpathtofile"
. Just change the variable utilitypath
to your folder.
@ECHO OFF
SETLOCAL
SET utilitypath=D:AppsCommonFiles
SET outfile="%utilitypath%%~n1.cmd"
ECHO @ECHO OFF > %outfile%
ECHO SETLOCAL >> %outfile%
ECHO SET progpath=%~f1 >> %outfile%
ECHO SET currpath=^%%CD^%% >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%progpath^%%") DO (^%%^%%~dI) >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%progpath^%%") DO (CD "^%%^%%~pI") >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%progpath^%%") DO ("^%%^%%~nxI" ^%%*) >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%currpath^%%") DO (^%%^%%~dI) >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%currpath^%%") DO (CD "^%%^%%~pnI") >> %outfile%
ECHO ENDLOCAL >> %outfile%
ECHO done.
WARNING: No checks of arguments are made. Existing files are overwritten.
edited Mar 20 '17 at 10:17
Community♦
1
1
answered Nov 16 '13 at 20:10
RoKi0815RoKi0815
417
417
add a comment |
add a comment |
This worked for me when I installed 7z program and wanted to use it in command prompt:
- I installed 7z, then I created a link to the exe file and copied it to windowssystem32 folder.
- I created a 7z.bat file and put one line inside it : 7z.exe.lnk, and copied that file into the windowssystem32 folder.
It then works as you wanted.
Here is an example (sorry for the Danish windows):
add a comment |
This worked for me when I installed 7z program and wanted to use it in command prompt:
- I installed 7z, then I created a link to the exe file and copied it to windowssystem32 folder.
- I created a 7z.bat file and put one line inside it : 7z.exe.lnk, and copied that file into the windowssystem32 folder.
It then works as you wanted.
Here is an example (sorry for the Danish windows):
add a comment |
This worked for me when I installed 7z program and wanted to use it in command prompt:
- I installed 7z, then I created a link to the exe file and copied it to windowssystem32 folder.
- I created a 7z.bat file and put one line inside it : 7z.exe.lnk, and copied that file into the windowssystem32 folder.
It then works as you wanted.
Here is an example (sorry for the Danish windows):
This worked for me when I installed 7z program and wanted to use it in command prompt:
- I installed 7z, then I created a link to the exe file and copied it to windowssystem32 folder.
- I created a 7z.bat file and put one line inside it : 7z.exe.lnk, and copied that file into the windowssystem32 folder.
It then works as you wanted.
Here is an example (sorry for the Danish windows):
answered Jan 22 at 6:31
serupserup
1114
1114
add a comment |
add a comment |
Thanks for contributing an answer to Super User!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f632487%2fhow-to-create-a-link-to-an-executable-which-must-be-run-in-its-own-folder%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
As you said, the problem is the program won't be able to find its config files or dependencies. Probably the best approach here is to use batch. For example C:Utilitiesprogram.bat with content
@start "" /D "%~dp0Program" program.exe %*
.– Vlastimil Ovčáčík
Aug 16 '13 at 12:20
I'll keep the batch approach for the while, but one of the drawbacks is for example: I can't have the program output in the current terminal (cmd/Powershell). Suppose I want to call
program --help
to print its usage info - it will only flash a cmd window and will not display the usage.– natenho
Aug 16 '13 at 12:44
1
how about
@start "" /B /D "%~dp0Program" program.exe %*
?– Vlastimil Ovčáčík
Aug 17 '13 at 18:45
/B switch helps the output but still batch can't solve seamlessly, you know? I'm still believing that it must have a simple way to get it working.
– natenho
Aug 18 '13 at 1:54