我正在使用批处理文件来编写脚本。
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脚本的变量?
答案 0 :(得分:1)
%~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