如何在 WinSCP 的自定义命令提示符中扩展到当前远程路径?

How to expand to current remote path in custom command prompt in WinSCP?

我尝试制作一个自定义命令,将选定的文件解压缩到用户定义的路径,但使用此命令为远程服务器中的当前路径和当前存档名称提供默认值,但提示只给了我一个空值。怎么了?

unzip "!" -d "!?&Extraction Path:?!/!!"

提前致谢!

这不可能。实际上有此功能的功能请求:
Bug 743 – Allow patterns in default prompt answer in custom commands.

虽然这意味着只支持像 !/ 这样的静态(非文件)模式,但不支持像 !.

这样的文件模式

如果有帮助,请在 WinSCP extensions, it's possible to use non-file patterns, like !/ (but not file patterns, like !) in default prompt/option 中回答。

扩展文件可能如下所示:

@name     Unzip...
@side     Remote
@command  unzip "!" -d "%ExtractionPath%"
@option   ExtractionPath -run textbox "Extraction path:" "!/"

将上面的脚本保存到一个文本文件中,install it to WinSCP.


您可以做的另一件事是添加一个复选框,使 WinSCP 向路径添加一个存档名称(没有扩展名),巧妙地使用 shell(bash ) 结构体。这样,如果您不想使用存档名称作为子文件夹名称,您可以取消选中该复选框并手动将自定义子文件夹添加到目标路径。

@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"


另一种选择是使用您自己的占位符作为存档名称(例如 ARCHIVENAME),当执行命令时,它将被真实名称(没有扩展名)替换。然后,如果您不想使用存档名称作为子文件夹名称,请将 ARCHIVENAME 替换为自定义名称。

@name     Unzip...
@side     Remote
@command  unzip "!" -d "`EP=%ExtractionPath%;AN=!;AN=${AN%.*};echo ${EP/ARCHIVENAME/$AN}`"
@option   ExtractionPath -run textbox "Extraction path:" "!/ARCHIVENAME"