无法让文件掩码在 PowerShell 的多行 WinSCP 命令行中正常工作
Cant get filemask to work properly in multi-line WinSCP command-line in PowerShell
我正在尝试使用 WinSCP 创建一个 PowerShell 脚本来自动执行 SFTP 传输。我可以连接并进行简单的传输,但我只想传输昨天的文件。为此,我需要一个我无法开始工作的文件掩码。
下面是我的代码。我正在使用这个脚本,将其放入 Notepad++,将其另存为 PowerShell 脚本并 运行。 SFTP 连接部分工作,因为我用它来抓取 SFTP 上的所有文件。所以我确定它是文件掩码部分。
& "C:\Program Files (x86)\WinSCP\WinSCP.com" `
/log="\blah\blah\users\vmedhe\thing.log" /ini=nul `
/command `
"open sftp://username:password@sftpsite -hostkey=`"`"not real host key=`"`"" `
"cd /" `
"lcd C:\Test_case" `
"get -filemask=`"`">yesterday`"`" shares" `
"get -filemask=`"`">yesterday`"`" *.*" `
"exit"
$winscpResult = $LastExitCode
if ($winscpResult -eq 0)
{
Write-Host "Success"
}
else
{
Write-Host "Error"
}
exit $winscpResult
不幸的是,我不断收到错误消息:
At C:\Powershell_Scripts\mXpress_main.PS1:9 char:2
+ "get -filemask=`"`">yesterday`"`" *.*" `
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Unexpected token '"get -filemask=`"`">yesterday`"`" *.*"' in expression or statement. At C:\Powershell_Scripts\mXpress_main.PS1:10 char:5
+ "exit"
+ ~~~~~~ Unexpected token '"exit"' in expression or statement.
+ CategoryInfo : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : UnexpectedToken
我的文件掩码有问题,但我不确定是什么。任何帮助都会很棒。
这不是文件掩码。 – 在 lcd
行的(看似)末尾的反引号后有一个 space。
所以反引号会转义 space,而不是换行符。因此,get
行被解释为新的 PowerShell 代码行。
它基本上是这个常见的 WinSCP 批处理文件问题的 PowerShell 等价物:
https://winscp.net/eng/docs/faq_batch_file#newline_escaping
谢谢,这确实是问题所在。以下是所有未来 google 的最终代码。
& "C:\Program Files (x86)\WinSCP\WinSCP.com" `
/log="\blah\blah\users\fake\thing.log" /ini=nul `
/command `
"open sftp://username:password@sftpname/ -hostkey=`"`"junk host key=`"`"" `
"cd /" `
"lcd C:\test_area" `
"get -filemask=`"`">yesterday`"`" shares" `
"get -filemask=`"`">yesterday`"`" *.*" `
"exit"
$winscpResult = $LastExitCode
if ($winscpResult -eq 0)
{
Write-Host "Success"
}
else
{
Write-Host "Error"
}
exit $winscpResult
我正在尝试使用 WinSCP 创建一个 PowerShell 脚本来自动执行 SFTP 传输。我可以连接并进行简单的传输,但我只想传输昨天的文件。为此,我需要一个我无法开始工作的文件掩码。
下面是我的代码。我正在使用这个脚本,将其放入 Notepad++,将其另存为 PowerShell 脚本并 运行。 SFTP 连接部分工作,因为我用它来抓取 SFTP 上的所有文件。所以我确定它是文件掩码部分。
& "C:\Program Files (x86)\WinSCP\WinSCP.com" `
/log="\blah\blah\users\vmedhe\thing.log" /ini=nul `
/command `
"open sftp://username:password@sftpsite -hostkey=`"`"not real host key=`"`"" `
"cd /" `
"lcd C:\Test_case" `
"get -filemask=`"`">yesterday`"`" shares" `
"get -filemask=`"`">yesterday`"`" *.*" `
"exit"
$winscpResult = $LastExitCode
if ($winscpResult -eq 0)
{
Write-Host "Success"
}
else
{
Write-Host "Error"
}
exit $winscpResult
不幸的是,我不断收到错误消息:
At C:\Powershell_Scripts\mXpress_main.PS1:9 char:2
+ "get -filemask=`"`">yesterday`"`" *.*" `
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Unexpected token '"get -filemask=`"`">yesterday`"`" *.*"' in expression or statement. At C:\Powershell_Scripts\mXpress_main.PS1:10 char:5
+ "exit"
+ ~~~~~~ Unexpected token '"exit"' in expression or statement.
+ CategoryInfo : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : UnexpectedToken
我的文件掩码有问题,但我不确定是什么。任何帮助都会很棒。
这不是文件掩码。 – 在 lcd
行的(看似)末尾的反引号后有一个 space。
所以反引号会转义 space,而不是换行符。因此,get
行被解释为新的 PowerShell 代码行。
它基本上是这个常见的 WinSCP 批处理文件问题的 PowerShell 等价物:
https://winscp.net/eng/docs/faq_batch_file#newline_escaping
谢谢,这确实是问题所在。以下是所有未来 google 的最终代码。
& "C:\Program Files (x86)\WinSCP\WinSCP.com" `
/log="\blah\blah\users\fake\thing.log" /ini=nul `
/command `
"open sftp://username:password@sftpname/ -hostkey=`"`"junk host key=`"`"" `
"cd /" `
"lcd C:\test_area" `
"get -filemask=`"`">yesterday`"`" shares" `
"get -filemask=`"`">yesterday`"`" *.*" `
"exit"
$winscpResult = $LastExitCode
if ($winscpResult -eq 0)
{
Write-Host "Success"
}
else
{
Write-Host "Error"
}
exit $winscpResult