winscp - 如何在 WinSCP 中的自定义命令提示符中扩展到当前远程路径?
问题描述
我尝试创建一个自定义命令,将所选文件解压缩到用户定义的路径,但使用此命令在远程服务器中使用当前路径和当前存档名称的默认值,但提示只是给了我一个空值。有什么错误?
unzip "!" -d "!?&Extraction Path:?!/!!"
提前致谢!
解决方案
这是不可能的。这个功能实际上有一个功能请求:
Bug 743 – Allow patterns in default prompt answer in custom commands。
尽管即使它意味着只支持静态(非文件)模式!/
,但不支持文件模式,如!
.
如果有帮助,在WinSCP extensions中,可以在默认提示/选项答案中使用非文件模式,如!/
(但不是文件模式,如)。!
扩展文件可能如下所示:
@name Unzip...
@side Remote
@command unzip "!" -d "%ExtractionPath%"
@option ExtractionPath -run textbox "Extraction path:" "!/"
只需将上述脚本存储到文本文件并将其安装到 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"
推荐阅读
- python - 如何在 django 应用程序中的模板中创建
- terraform - Terraform 目录“.terraform/modules”命名约定
- math - 如何在给定度量和已知范围 [m,M] 映射到 4 的情况下计算分数 0-4?
- java - 直接绘制到画布并使用 java 代码创建布局
- function - 球拍:预期:程序?
- amazon-web-services - 使用 Terraform 管理 IAM 代入角色创建
- javascript - Trying to make different HTML paragraph show depending on selection
- javascript - 在 FullCalendar 的月时间线视图中显示中午的事件
- r - 这是潜在的代码错误还是机器设置错误?没有把握
- json - 无法从 convertApi 响应中读取 pdf 文件