How to expand to current remote path in custom command prompt in WinSCP?
I tried to make a custom command that unzip a selected file to a path defined by user, but with a default value to current path and current archive name in remote server using this command, but the prompt just gave me an empty value. What's the mistake?
unzip "!" -d "!?&Extraction Path:?!/!!"
Thanks in advance!
winscp
add a comment |
I tried to make a custom command that unzip a selected file to a path defined by user, but with a default value to current path and current archive name in remote server using this command, but the prompt just gave me an empty value. What's the mistake?
unzip "!" -d "!?&Extraction Path:?!/!!"
Thanks in advance!
winscp
add a comment |
I tried to make a custom command that unzip a selected file to a path defined by user, but with a default value to current path and current archive name in remote server using this command, but the prompt just gave me an empty value. What's the mistake?
unzip "!" -d "!?&Extraction Path:?!/!!"
Thanks in advance!
winscp
I tried to make a custom command that unzip a selected file to a path defined by user, but with a default value to current path and current archive name in remote server using this command, but the prompt just gave me an empty value. What's the mistake?
unzip "!" -d "!?&Extraction Path:?!/!!"
Thanks in advance!
winscp
winscp
edited Nov 13 '18 at 7:23
Martin Prikryl
86.4k22164360
86.4k22164360
asked Nov 12 '18 at 15:39
Gregor IsackGregor Isack
456312
456312
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
It's not possible. There's actually a feature request for this functionality:
Bug 743 – Allow patterns in default prompt answer in custom commands.
Though even that it meant to support only static (non-file) patterns like !/
, but not file patterns like !
.
If it helps, in WinSCP extensions, it's possible to use non-file patterns, like !/
(but not file patterns, like !
) in default prompt/option answer.
The extension file may look like:
@name Unzip...
@side Remote
@command unzip "!" -d "%ExtractionPath%"
@option ExtractionPath -run textbox "Extraction path:" "!/"
Just store the above script to a text file and install it to WinSCP.
Another thing that you can do, is to add a checkbox that will make WinSCP add an archive name (without an extension) to the path, with some clever use of shell (bash) constructs. This way, you can uncheck the checkbox and add a custom subfolder to the target path manually, if you do not want to use the archive name for the subfolder name.
@name Unzip...
@side Remote
@command unzip "!" -d "%ExtractionPath%`[[ '%AddName%' = '1' ]] && AN=! && echo ${AN%.*}`"
@option ExtractionPath -run textbox "Extraction path:" "!/"
@option AddName -run checkbox "Add file name to the extraction path" "1" "1"
Yet another alternative is to use your own placeholder for archive name (e.g. ARCHIVENAME
) that will get replaced by real name (without an extension), when the command is executed. Then, if you do not want to use the archive name for the subfolder name, you replace the ARCHIVENAME
with a custom name.
@name Unzip...
@side Remote
@command unzip "!" -d "`EP=%ExtractionPath%;AN=!;AN=${AN%.*};echo ${EP/ARCHIVENAME/$AN}`"
@option ExtractionPath -run textbox "Extraction path:" "!/ARCHIVENAME"
1
That last method is genius! Thank you for the very thorough answer!
– Gregor Isack
Nov 13 '18 at 12:30
Hey I try to modify the last command a little bit to make it remove the file extension by using this command@command unzip "!" -d "``EP=%ExtractionPath%;echo $(${EP/ARCHIVENAME/!} | awk -F. '{ print $1 }')``"
and WinSCP hanged on executing command and give me an error sayingHost is not communicating...
, any idea why? PS: dont worry about the extra `` mark, it's the formatting which I don't know how to fix yet.
– Gregor Isack
Nov 13 '18 at 13:14
Ah okay, let's say I have an archive namedarchive.zip
, using the command in last method would failed sinceunzip
can't extract to the same path that contains the same name of archive, for example, extracting/home/martin/archive.zip
to/home/martin/archive.zip
(even though it's the folder name) would failed. And yeah you're right that it would modify the custom name, which I'll try to solve it after.
– Gregor Isack
Nov 13 '18 at 13:27
That works perfectly now! Btw I nerver see one uses${AN%.*}
before (and it looks shorter and more efficient thansed
orawk
, would you mind explain what the specifier did?
– Gregor Isack
Nov 13 '18 at 14:15
1
I took it from here: stackoverflow.com/q/965053/850848#965072 - Explained here: gnu.org/software/bash/manual/html_node/… (though I cannot really say, I understand it fully).
– Martin Prikryl
Nov 13 '18 at 14:17
|
show 1 more comment
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
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%2fstackoverflow.com%2fquestions%2f53265457%2fhow-to-expand-to-current-remote-path-in-custom-command-prompt-in-winscp%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
It's not possible. There's actually a feature request for this functionality:
Bug 743 – Allow patterns in default prompt answer in custom commands.
Though even that it meant to support only static (non-file) patterns like !/
, but not file patterns like !
.
If it helps, in WinSCP extensions, it's possible to use non-file patterns, like !/
(but not file patterns, like !
) in default prompt/option answer.
The extension file may look like:
@name Unzip...
@side Remote
@command unzip "!" -d "%ExtractionPath%"
@option ExtractionPath -run textbox "Extraction path:" "!/"
Just store the above script to a text file and install it to WinSCP.
Another thing that you can do, is to add a checkbox that will make WinSCP add an archive name (without an extension) to the path, with some clever use of shell (bash) constructs. This way, you can uncheck the checkbox and add a custom subfolder to the target path manually, if you do not want to use the archive name for the subfolder name.
@name Unzip...
@side Remote
@command unzip "!" -d "%ExtractionPath%`[[ '%AddName%' = '1' ]] && AN=! && echo ${AN%.*}`"
@option ExtractionPath -run textbox "Extraction path:" "!/"
@option AddName -run checkbox "Add file name to the extraction path" "1" "1"
Yet another alternative is to use your own placeholder for archive name (e.g. ARCHIVENAME
) that will get replaced by real name (without an extension), when the command is executed. Then, if you do not want to use the archive name for the subfolder name, you replace the ARCHIVENAME
with a custom name.
@name Unzip...
@side Remote
@command unzip "!" -d "`EP=%ExtractionPath%;AN=!;AN=${AN%.*};echo ${EP/ARCHIVENAME/$AN}`"
@option ExtractionPath -run textbox "Extraction path:" "!/ARCHIVENAME"
1
That last method is genius! Thank you for the very thorough answer!
– Gregor Isack
Nov 13 '18 at 12:30
Hey I try to modify the last command a little bit to make it remove the file extension by using this command@command unzip "!" -d "``EP=%ExtractionPath%;echo $(${EP/ARCHIVENAME/!} | awk -F. '{ print $1 }')``"
and WinSCP hanged on executing command and give me an error sayingHost is not communicating...
, any idea why? PS: dont worry about the extra `` mark, it's the formatting which I don't know how to fix yet.
– Gregor Isack
Nov 13 '18 at 13:14
Ah okay, let's say I have an archive namedarchive.zip
, using the command in last method would failed sinceunzip
can't extract to the same path that contains the same name of archive, for example, extracting/home/martin/archive.zip
to/home/martin/archive.zip
(even though it's the folder name) would failed. And yeah you're right that it would modify the custom name, which I'll try to solve it after.
– Gregor Isack
Nov 13 '18 at 13:27
That works perfectly now! Btw I nerver see one uses${AN%.*}
before (and it looks shorter and more efficient thansed
orawk
, would you mind explain what the specifier did?
– Gregor Isack
Nov 13 '18 at 14:15
1
I took it from here: stackoverflow.com/q/965053/850848#965072 - Explained here: gnu.org/software/bash/manual/html_node/… (though I cannot really say, I understand it fully).
– Martin Prikryl
Nov 13 '18 at 14:17
|
show 1 more comment
It's not possible. There's actually a feature request for this functionality:
Bug 743 – Allow patterns in default prompt answer in custom commands.
Though even that it meant to support only static (non-file) patterns like !/
, but not file patterns like !
.
If it helps, in WinSCP extensions, it's possible to use non-file patterns, like !/
(but not file patterns, like !
) in default prompt/option answer.
The extension file may look like:
@name Unzip...
@side Remote
@command unzip "!" -d "%ExtractionPath%"
@option ExtractionPath -run textbox "Extraction path:" "!/"
Just store the above script to a text file and install it to WinSCP.
Another thing that you can do, is to add a checkbox that will make WinSCP add an archive name (without an extension) to the path, with some clever use of shell (bash) constructs. This way, you can uncheck the checkbox and add a custom subfolder to the target path manually, if you do not want to use the archive name for the subfolder name.
@name Unzip...
@side Remote
@command unzip "!" -d "%ExtractionPath%`[[ '%AddName%' = '1' ]] && AN=! && echo ${AN%.*}`"
@option ExtractionPath -run textbox "Extraction path:" "!/"
@option AddName -run checkbox "Add file name to the extraction path" "1" "1"
Yet another alternative is to use your own placeholder for archive name (e.g. ARCHIVENAME
) that will get replaced by real name (without an extension), when the command is executed. Then, if you do not want to use the archive name for the subfolder name, you replace the ARCHIVENAME
with a custom name.
@name Unzip...
@side Remote
@command unzip "!" -d "`EP=%ExtractionPath%;AN=!;AN=${AN%.*};echo ${EP/ARCHIVENAME/$AN}`"
@option ExtractionPath -run textbox "Extraction path:" "!/ARCHIVENAME"
1
That last method is genius! Thank you for the very thorough answer!
– Gregor Isack
Nov 13 '18 at 12:30
Hey I try to modify the last command a little bit to make it remove the file extension by using this command@command unzip "!" -d "``EP=%ExtractionPath%;echo $(${EP/ARCHIVENAME/!} | awk -F. '{ print $1 }')``"
and WinSCP hanged on executing command and give me an error sayingHost is not communicating...
, any idea why? PS: dont worry about the extra `` mark, it's the formatting which I don't know how to fix yet.
– Gregor Isack
Nov 13 '18 at 13:14
Ah okay, let's say I have an archive namedarchive.zip
, using the command in last method would failed sinceunzip
can't extract to the same path that contains the same name of archive, for example, extracting/home/martin/archive.zip
to/home/martin/archive.zip
(even though it's the folder name) would failed. And yeah you're right that it would modify the custom name, which I'll try to solve it after.
– Gregor Isack
Nov 13 '18 at 13:27
That works perfectly now! Btw I nerver see one uses${AN%.*}
before (and it looks shorter and more efficient thansed
orawk
, would you mind explain what the specifier did?
– Gregor Isack
Nov 13 '18 at 14:15
1
I took it from here: stackoverflow.com/q/965053/850848#965072 - Explained here: gnu.org/software/bash/manual/html_node/… (though I cannot really say, I understand it fully).
– Martin Prikryl
Nov 13 '18 at 14:17
|
show 1 more comment
It's not possible. There's actually a feature request for this functionality:
Bug 743 – Allow patterns in default prompt answer in custom commands.
Though even that it meant to support only static (non-file) patterns like !/
, but not file patterns like !
.
If it helps, in WinSCP extensions, it's possible to use non-file patterns, like !/
(but not file patterns, like !
) in default prompt/option answer.
The extension file may look like:
@name Unzip...
@side Remote
@command unzip "!" -d "%ExtractionPath%"
@option ExtractionPath -run textbox "Extraction path:" "!/"
Just store the above script to a text file and install it to WinSCP.
Another thing that you can do, is to add a checkbox that will make WinSCP add an archive name (without an extension) to the path, with some clever use of shell (bash) constructs. This way, you can uncheck the checkbox and add a custom subfolder to the target path manually, if you do not want to use the archive name for the subfolder name.
@name Unzip...
@side Remote
@command unzip "!" -d "%ExtractionPath%`[[ '%AddName%' = '1' ]] && AN=! && echo ${AN%.*}`"
@option ExtractionPath -run textbox "Extraction path:" "!/"
@option AddName -run checkbox "Add file name to the extraction path" "1" "1"
Yet another alternative is to use your own placeholder for archive name (e.g. ARCHIVENAME
) that will get replaced by real name (without an extension), when the command is executed. Then, if you do not want to use the archive name for the subfolder name, you replace the ARCHIVENAME
with a custom name.
@name Unzip...
@side Remote
@command unzip "!" -d "`EP=%ExtractionPath%;AN=!;AN=${AN%.*};echo ${EP/ARCHIVENAME/$AN}`"
@option ExtractionPath -run textbox "Extraction path:" "!/ARCHIVENAME"
It's not possible. There's actually a feature request for this functionality:
Bug 743 – Allow patterns in default prompt answer in custom commands.
Though even that it meant to support only static (non-file) patterns like !/
, but not file patterns like !
.
If it helps, in WinSCP extensions, it's possible to use non-file patterns, like !/
(but not file patterns, like !
) in default prompt/option answer.
The extension file may look like:
@name Unzip...
@side Remote
@command unzip "!" -d "%ExtractionPath%"
@option ExtractionPath -run textbox "Extraction path:" "!/"
Just store the above script to a text file and install it to WinSCP.
Another thing that you can do, is to add a checkbox that will make WinSCP add an archive name (without an extension) to the path, with some clever use of shell (bash) constructs. This way, you can uncheck the checkbox and add a custom subfolder to the target path manually, if you do not want to use the archive name for the subfolder name.
@name Unzip...
@side Remote
@command unzip "!" -d "%ExtractionPath%`[[ '%AddName%' = '1' ]] && AN=! && echo ${AN%.*}`"
@option ExtractionPath -run textbox "Extraction path:" "!/"
@option AddName -run checkbox "Add file name to the extraction path" "1" "1"
Yet another alternative is to use your own placeholder for archive name (e.g. ARCHIVENAME
) that will get replaced by real name (without an extension), when the command is executed. Then, if you do not want to use the archive name for the subfolder name, you replace the ARCHIVENAME
with a custom name.
@name Unzip...
@side Remote
@command unzip "!" -d "`EP=%ExtractionPath%;AN=!;AN=${AN%.*};echo ${EP/ARCHIVENAME/$AN}`"
@option ExtractionPath -run textbox "Extraction path:" "!/ARCHIVENAME"
edited Nov 13 '18 at 13:41
answered Nov 12 '18 at 16:31
Martin PrikrylMartin Prikryl
86.4k22164360
86.4k22164360
1
That last method is genius! Thank you for the very thorough answer!
– Gregor Isack
Nov 13 '18 at 12:30
Hey I try to modify the last command a little bit to make it remove the file extension by using this command@command unzip "!" -d "``EP=%ExtractionPath%;echo $(${EP/ARCHIVENAME/!} | awk -F. '{ print $1 }')``"
and WinSCP hanged on executing command and give me an error sayingHost is not communicating...
, any idea why? PS: dont worry about the extra `` mark, it's the formatting which I don't know how to fix yet.
– Gregor Isack
Nov 13 '18 at 13:14
Ah okay, let's say I have an archive namedarchive.zip
, using the command in last method would failed sinceunzip
can't extract to the same path that contains the same name of archive, for example, extracting/home/martin/archive.zip
to/home/martin/archive.zip
(even though it's the folder name) would failed. And yeah you're right that it would modify the custom name, which I'll try to solve it after.
– Gregor Isack
Nov 13 '18 at 13:27
That works perfectly now! Btw I nerver see one uses${AN%.*}
before (and it looks shorter and more efficient thansed
orawk
, would you mind explain what the specifier did?
– Gregor Isack
Nov 13 '18 at 14:15
1
I took it from here: stackoverflow.com/q/965053/850848#965072 - Explained here: gnu.org/software/bash/manual/html_node/… (though I cannot really say, I understand it fully).
– Martin Prikryl
Nov 13 '18 at 14:17
|
show 1 more comment
1
That last method is genius! Thank you for the very thorough answer!
– Gregor Isack
Nov 13 '18 at 12:30
Hey I try to modify the last command a little bit to make it remove the file extension by using this command@command unzip "!" -d "``EP=%ExtractionPath%;echo $(${EP/ARCHIVENAME/!} | awk -F. '{ print $1 }')``"
and WinSCP hanged on executing command and give me an error sayingHost is not communicating...
, any idea why? PS: dont worry about the extra `` mark, it's the formatting which I don't know how to fix yet.
– Gregor Isack
Nov 13 '18 at 13:14
Ah okay, let's say I have an archive namedarchive.zip
, using the command in last method would failed sinceunzip
can't extract to the same path that contains the same name of archive, for example, extracting/home/martin/archive.zip
to/home/martin/archive.zip
(even though it's the folder name) would failed. And yeah you're right that it would modify the custom name, which I'll try to solve it after.
– Gregor Isack
Nov 13 '18 at 13:27
That works perfectly now! Btw I nerver see one uses${AN%.*}
before (and it looks shorter and more efficient thansed
orawk
, would you mind explain what the specifier did?
– Gregor Isack
Nov 13 '18 at 14:15
1
I took it from here: stackoverflow.com/q/965053/850848#965072 - Explained here: gnu.org/software/bash/manual/html_node/… (though I cannot really say, I understand it fully).
– Martin Prikryl
Nov 13 '18 at 14:17
1
1
That last method is genius! Thank you for the very thorough answer!
– Gregor Isack
Nov 13 '18 at 12:30
That last method is genius! Thank you for the very thorough answer!
– Gregor Isack
Nov 13 '18 at 12:30
Hey I try to modify the last command a little bit to make it remove the file extension by using this command
@command unzip "!" -d "``EP=%ExtractionPath%;echo $(${EP/ARCHIVENAME/!} | awk -F. '{ print $1 }')``"
and WinSCP hanged on executing command and give me an error saying Host is not communicating...
, any idea why? PS: dont worry about the extra `` mark, it's the formatting which I don't know how to fix yet.– Gregor Isack
Nov 13 '18 at 13:14
Hey I try to modify the last command a little bit to make it remove the file extension by using this command
@command unzip "!" -d "``EP=%ExtractionPath%;echo $(${EP/ARCHIVENAME/!} | awk -F. '{ print $1 }')``"
and WinSCP hanged on executing command and give me an error saying Host is not communicating...
, any idea why? PS: dont worry about the extra `` mark, it's the formatting which I don't know how to fix yet.– Gregor Isack
Nov 13 '18 at 13:14
Ah okay, let's say I have an archive named
archive.zip
, using the command in last method would failed since unzip
can't extract to the same path that contains the same name of archive, for example, extracting /home/martin/archive.zip
to /home/martin/archive.zip
(even though it's the folder name) would failed. And yeah you're right that it would modify the custom name, which I'll try to solve it after.– Gregor Isack
Nov 13 '18 at 13:27
Ah okay, let's say I have an archive named
archive.zip
, using the command in last method would failed since unzip
can't extract to the same path that contains the same name of archive, for example, extracting /home/martin/archive.zip
to /home/martin/archive.zip
(even though it's the folder name) would failed. And yeah you're right that it would modify the custom name, which I'll try to solve it after.– Gregor Isack
Nov 13 '18 at 13:27
That works perfectly now! Btw I nerver see one uses
${AN%.*}
before (and it looks shorter and more efficient than sed
or awk
, would you mind explain what the specifier did?– Gregor Isack
Nov 13 '18 at 14:15
That works perfectly now! Btw I nerver see one uses
${AN%.*}
before (and it looks shorter and more efficient than sed
or awk
, would you mind explain what the specifier did?– Gregor Isack
Nov 13 '18 at 14:15
1
1
I took it from here: stackoverflow.com/q/965053/850848#965072 - Explained here: gnu.org/software/bash/manual/html_node/… (though I cannot really say, I understand it fully).
– Martin Prikryl
Nov 13 '18 at 14:17
I took it from here: stackoverflow.com/q/965053/850848#965072 - Explained here: gnu.org/software/bash/manual/html_node/… (though I cannot really say, I understand it fully).
– Martin Prikryl
Nov 13 '18 at 14:17
|
show 1 more comment
Thanks for contributing an answer to Stack Overflow!
- 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%2fstackoverflow.com%2fquestions%2f53265457%2fhow-to-expand-to-current-remote-path-in-custom-command-prompt-in-winscp%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