I have created the following command file with name submitCmd.txt
:
open [email protected] -privatekey=C:\Users\Mike\Desktop\uploader\mykey.ppk
put C:\Users\Mike\Desktop\uploader\files2Upload\myFile.xlsx /mnt/data/myFolder/
close
exit
When I run the above script from command line as:
winscp.com /script=C:\Users\Mike\Desktop\uploader\submitCmd.txt
It runs successfully.
However, when I try the following in python:
cmdFile = r'C:\Users\Mike\Desktop\uploader\submitCmd.txt'
import subprocess
subprocess.run(["winscp.com", "/script=", cmdFile], shell=True)
I get the error:
Searching for host...
Host "C" does not exist.
winscp>
Your command will run WinSCP like this:
winscp.com /script= C:\Users\Mike\Desktop\uploader\submitCmd.txt
What is an invalid syntax. There cannot be the space after the /script=
.
This should work:
subprocess.run(["winscp.com", "/script=" + cmdFile], shell=True)
If you want to avoid creating a script file, see: From Python run WinSCP commands in console.