Na verdade, não há comando set no WinSCP.
O set command , com a sintaxe que você está usando , é um comando do Windows.
Como tal, você precisa executá-lo a partir de um arquivo de lote do Windows, como o seu ftprun.cmd .
O WinSCP pode resolver variáveis de ambiente do Windows em seu script:
Portanto, tudo o que você precisa fazer é mover a linha set para o ftprun.cmd , antes da chamada para winscp.com :
set mydate=%date:~6,4%%date:~3,2%%date:~0,2%
"C:\Program Files\WinSCP\winscp.com" /script=D:\testsftp\ftpscript.txt
De qualquer forma, observe que sua date magic é específica de localidade, portanto, certifique-se de que todas as máquinas em que você usa o script usem o mesmo local (idioma) da máquina que você desenvolve / testa. Por exemplo, com minha localidade tcheca, o mydate resolve o absurdo 06.12čt , porque o date é čt 12. 06. 2014 .
Melhor solução é usar a % sintaxe %TIMESTAMP% do WinSCP:
mkdir %TIMESTAMP#yyyymmdd%