【问题标题】:Execute the batch file on the server side after uploading it: C#上传后在服务器端执行批处理文件:C#
【发布时间】:2013-01-17 09:00:18
【问题描述】:

我使用 C# (FtpWebRequest) 中的 FTP 将批处理文件传输(上传)到服务器。批处理文件有一些命令。我的要求是将批处理文件传输到服务器(我能够做到)并执行该批处理文件。

如何从客户端执行服务器上批处理文件中的命令?我可以使用 Process.Start() 方法或 rsh 吗?哪种方法更好,并提供示例链接将不胜感激。

【问题讨论】:

    标签: c# ftp batch-file


    【解决方案1】:

    上次我需要远程复制和运行批处理文件时,我使用了PSExec。但是,这需要远程计算机上的管理员权限。

    【讨论】:

    • 我不想使用任何软件来执行我的操作。我的批处理文件上传到 Unix 机器上。有没有办法不使用像 PSExec 这样的实用程序??
    • 就像那个样子,不错的链接。谢谢
    • @Joey,如果批处理文件在同一台 Windows 机器上,我会使用 Process p = new Process(); p.StartInfo.FileName = ; p.Start();一个人怎么能远程执行同样的事情???
    • ssh、PowerShell 远程处理、psexec、telnet ......这一切都取决于我们正在谈论的另一端的操作系统。我很惊讶您期望 C# 的本机进程处理甚至适用于此。
    • 我需要在 C# 应用程序中完成所有这些工作。所以显然我需要一种使用 C# 方式的方法。有什么帮助吗??
    【解决方案2】:

    您可以尝试使用 SITE FTP 命令来运行该文件,但这是特定于服务器和操作系统的(即您不能在 Unix 上启动 .BAT 文件或在Windows 服务器,也不是所有服务器都支持通过 SITE 命令执行外部命令)。

    如果这没有帮助,您必须在远程端设置一些服务器(例如 SSH 服务器),并在通过 FTP 上传后使用 SSH 协议连接到该 SSH 服务器(但如果您使用 SSH,则不需要不需要 FTP - 您可以使用基于 SSH 的 SFTP)。

    【讨论】:

      【解决方案3】:

      您可以运行一个运行批处理文件的计划任务(比如每五分钟一次)。您可能需要执行一些清理任务,例如在运行批处理文件后删除它(这样它就不会无意中再次运行)。

      (如果您的批处理文件每次都有不同的名称...可能需要重新考虑一下。)

      这样做的好处是它非常简单,它使用非常可靠的 Windows 调度程序,并且不需要 3rd 方应用程序。

      【讨论】:

        【解决方案4】:

        Nayan Soni For Execute Bath File System.Diagnostics.Process.Start(FileName, Parameters); 并且对于套接字参考:http://www.codeproject.com/Articles/10649/An-Introduction-to-Socket-Programming-in-NET-using 此示例 http://diaryanakku.files.wordpress.com/2013/01/socket.jpeg(将文件 .jpeg 更改为 .7z)并提取。抱歉限制。

        【讨论】:

          【解决方案5】:

          另一种选择你可以使用socket编程,当bath文件传输完成后,发送命令到服务器执行bath文件。我认为这是第二选择。

          【讨论】:

            最近更新 更多