3

Меня просят автоматизировать некоторые процессы загрузки SFTP через WinSCP. Я не знаком со сценариями WinSCP.

ftprun.cmd:

C:\Program Files\WinSCP\winscp.com" /script=D:\testsftp\ftpscript.txt

ftpscript.txt:

option batch continue
option confirm off
open MRMRSA@sftp.merimen.com
set mydate=%date:~6,4%%date:~3,2%%date:~0,2%
cd /cygdrive/h/ftproot/PROD/MRMRSA/eMotor/
lcd D:\testsftp
mkdir %mydate%
exit

Когда я запускаю скрипт, система показывает

Неизвестная команда 'set'.

Искал все выше и ниже, чтобы решить эту проблему, но не повезло.

1 ответ1

4

Там действительно нет команды set в WinSCP.

Команда set с синтаксисом, который вы используете, является командой Windows.

Таким образом, вам нужно выполнить его из пакетного файла Windows, такого как ваш ftprun.cmd .

WinSCP может разрешать переменные среды Windows в своем скрипте:

Поэтому все, что вам действительно нужно сделать, это переместить строку set в ftprun.cmd перед вызовом winscp.com:

set mydate=%date:~6,4%%date:~3,2%%date:~0,2%
"C:\Program Files\WinSCP\winscp.com" /script=D:\testsftp\ftpscript.txt

В любом случае, обратите внимание, что ваша магия date зависит от локали, поэтому убедитесь, что каждая машина, на которой вы используете скрипт, использует ту же локаль (язык), что и машина, на которой вы ее разрабатываете / тестируете. Например, для моей чешской локали mydate разрешается до глупости 06.12čt , потому что date - čt 12. 06. 2014

Лучшее решение - использовать синтаксис WinSCP %TIMESTAMP%:

mkdir %TIMESTAMP#yyyymmdd%

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .