WinSCP - 未知命令和“.log”未被识别为内部或外部命令
WinSCP - Unknown command and '.log' is not recognized as an internal or external command
上下文: 我正在使用 powershell 实例化批处理文件以在 WinSCP 中执行同步远程命令,并将新数据从远程目录拉入我的本地目录。有关 WinSCP 命令的内容和批处理文件内容,请参见下面的屏幕截图。
当我尝试执行时,我能够成功进行身份验证,但我看到 2 个错误。
批处理文件内容:
winscp.com /script=winscp_commands_ar_history.txt
/log=C:/Users/REDACTED/Desktop/AR_History_Report/winscp_log_ar_history.txt
WinSCP 命令:
option batch abort
option confirm off
open sftp://REDACTED:REDACTED@sftp.REDACTED.com
-hostkey="ssh-rsa 2048 cc:ea:2e:03:96:ca:e7:c0:59:74:13:a8:XX:XX:XX:XX"
synchronize remote /export/GroupAccess/REDACTED/Cognos Reporting/CogTest
C:/Users/REDACTED/Desktop/AR_History_Report
exit
Powershell 输出:
错误:
Unknown command '-hostkey=ssh-rsa 2048 cc:ea:2e:03:96:ca:e7:c0:59:74:13:a8:XX:XX:XX:XX'.
'/log' is not recognized as an internal or external command,
operable program or batch file.
问题:如何解决这 2 个错误?我怀疑最后一个与环境变量有关,因为 powershell 似乎无法识别 WinSCP 日志命令,因此我已将 WinSCP 添加到我的 PATH 环境变量中,但我仍然遇到相同的错误。有人可以帮忙吗?谢谢。
您的批处理文件和 WinSCP 脚本在命令中间都有换行符。此外,在 synchronize
命令中,您需要 wrap the path with spaces to double quotes.
批处理文件应该是:
winscp.com /script=winscp_commands_ar_history.txt /log=C:/Users/REDACTED/Desktop/AR_History_Report/winscp_log_ar_history.txt
脚本文件应该是:
option batch abort
option confirm off
open sftp://REDACTED:REDACTED@sftp.REDACTED.com -hostkey="ssh-rsa 2048 cc:ea:2e:03:96:ca:e7:c0:59:74:13:a8:XX:XX:XX:XX"
synchronize remote "/export/GroupAccess/REDACTED/Cognos Reporting/CogTest" C:/Users/REDACTED/Desktop/AR_History_Report
exit
顺便说一句,正如@mklement0 评论的那样,您不需要另一个 powershell
进程来从 PowerShell 调用批处理文件 - 只需直接调用批处理文件:.\ar_trigger_history.bat
上下文: 我正在使用 powershell 实例化批处理文件以在 WinSCP 中执行同步远程命令,并将新数据从远程目录拉入我的本地目录。有关 WinSCP 命令的内容和批处理文件内容,请参见下面的屏幕截图。 当我尝试执行时,我能够成功进行身份验证,但我看到 2 个错误。
批处理文件内容:
winscp.com /script=winscp_commands_ar_history.txt
/log=C:/Users/REDACTED/Desktop/AR_History_Report/winscp_log_ar_history.txt
WinSCP 命令:
option batch abort
option confirm off
open sftp://REDACTED:REDACTED@sftp.REDACTED.com
-hostkey="ssh-rsa 2048 cc:ea:2e:03:96:ca:e7:c0:59:74:13:a8:XX:XX:XX:XX"
synchronize remote /export/GroupAccess/REDACTED/Cognos Reporting/CogTest
C:/Users/REDACTED/Desktop/AR_History_Report
exit
Powershell 输出:
错误:
Unknown command '-hostkey=ssh-rsa 2048 cc:ea:2e:03:96:ca:e7:c0:59:74:13:a8:XX:XX:XX:XX'.
'/log' is not recognized as an internal or external command, operable program or batch file.
问题:如何解决这 2 个错误?我怀疑最后一个与环境变量有关,因为 powershell 似乎无法识别 WinSCP 日志命令,因此我已将 WinSCP 添加到我的 PATH 环境变量中,但我仍然遇到相同的错误。有人可以帮忙吗?谢谢。
您的批处理文件和 WinSCP 脚本在命令中间都有换行符。此外,在 synchronize
命令中,您需要 wrap the path with spaces to double quotes.
批处理文件应该是:
winscp.com /script=winscp_commands_ar_history.txt /log=C:/Users/REDACTED/Desktop/AR_History_Report/winscp_log_ar_history.txt
脚本文件应该是:
option batch abort
option confirm off
open sftp://REDACTED:REDACTED@sftp.REDACTED.com -hostkey="ssh-rsa 2048 cc:ea:2e:03:96:ca:e7:c0:59:74:13:a8:XX:XX:XX:XX"
synchronize remote "/export/GroupAccess/REDACTED/Cognos Reporting/CogTest" C:/Users/REDACTED/Desktop/AR_History_Report
exit
顺便说一句,正如@mklement0 评论的那样,您不需要另一个 powershell
进程来从 PowerShell 调用批处理文件 - 只需直接调用批处理文件:.\ar_trigger_history.bat