WinSCP: Как ввести параметр сценария с пробелами без разрешения двойных кавычек в сценарии WinSCP? - PullRequest
0 голосов
/ 31 января 2019

Я использую командный файл для написания сценария.

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?

1 Ответ

0 голосов
/ 31 января 2019

%~3 расширяет входную переменную %3, удаляя окружающие квоты.Вы также можете сделать немного более чистый сценарий, не имея двойного перенаправления в файл в каждой строке.

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