batch-file - WinSCP:如何在不解析 WinSCP 脚本上的双引号的情况下输入带空格的脚本参数?
问题描述
我正在使用批处理文件来编写脚本。
echo open sftp://user:pass@cagprod/ >> script.tmp
echo option batch continue >> script.tmp
echo option confirm off >> script.tmp
echo cd /ccr/ccar_modsub/Unsecured_Production/CCAR_Models/Model_Code_Version/Acct_lvl/HK_CARD/Code >> script.tmp
echo get * "Y:\1. Documents\Automated file copying\%3\Code\" >> script.tmp
echo close >> script.tmp
echo exit >> script.tmp
"Y:\Winscp\winscp382.exe" /console /script=script.tmp /parameter
del script.tmp
我想要 %3 参数(它包含空格,所以我必须使用双引号调用它)当我在命令行上调用它时解析没有任何双引号,如下所示 -
"i:\CAP_Profile\Desktop\Automation file copying\script2.bat" "Data setp\Code line"
另外,有没有更好的方法来为 WinSCP 脚本声明变量?
解决方案
%~3
扩展输入变量%3
,去除周围的 qoutes。您还可以通过不在每一行中双重重定向到文件来做一个稍微干净的脚本。
@echo off
>script.tmp (
echo open sftp://user:pass@cagprod/
echo option batch continue
echo option confirm off
echo cd /ccr/ccar_modsub/Unsecured_Production/CCAR_Models/Model_Code_Version/Acct_lvl/HK_CARD/Code
echo get * "Y:\1. Documents\Automated file copying\%~3\Code\"
echo close
echo exit
)
此外,作为原始代码中需要注意的事项。进行重定向时,请在重定向之前注意空格,因为任何空格实际上都是作为输出的一部分传输的,因此尽管在大多数情况下这无关紧要,但它可以产生影响。为了证明这一点,只需从 cmdline 运行这些:
type nul>test_file.txt
echo Hello >> test_file.txt
然后在您可以重复以下操作以查看没有尾随空格notepad test_file.txt
之后,请注意尾随空格:Hello
type nul>test_file.txt
echo Hello>>test_file.txt
推荐阅读
- python - 根据多个条件更新日期列值
- javascript - 如何为多个用户存储信息
- lighttpd - lighttpd mod_secdownload 总是 404 的
- omnet++ - 如何设置指数函数的默认自动增量值
- angular - ASP.NET Core UTC 时间到本地
- google-apps-script - Google表格脚本:将所有命名范围输出到单元格
- amazon-web-services - Dynamodb - 如何选择合适的 GSI 和 LSI
- python - 如何使用固定到 Thud 的 Yocto 升级 Python?
- angular - 带有多个选项的角度材料选择下拉菜单不隐藏在对话框中
- python - 用文本内容谷歌驱动器api创建一个新文件?