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

时间:2018-11-12 15:39:26

标签: winscp

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

不可能。实际上有一项功能要求使用此功能:
Bug 743 – Allow patterns in default prompt answer in custom commands

尽管这意味着它仅支持!/之类的静态(非文件)模式,但不支持!之类的文件模式。


如果有帮助,可以在WinSCP extensions的默认答案中使用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"

enter image description here


另一种替代方法是使用自己的占位符作为存档名称(例如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"

enter image description here