【问题标题】:Copy local text file to remote desktop将本地文本文件复制到远程桌面
【发布时间】:2013-08-23 09:18:53
【问题描述】:

我正在尝试将我工作目录中的 local text file 复制到其他 remote desktop

这就是我在here提到的尝试做的方式

ExecuteCommand("Copy" & Directory.GetCurrentDirectory & "\Output\Files.txt \\myservername -u username -p password C$\Files.txt")

Public Sub ExecuteCommand(ByVal Command As String)
        Dim ProcessInfo As ProcessStartInfo
        Dim Process As Process
        ProcessInfo = New ProcessStartInfo("cmd.exe", "/K" & Command)
        ProcessInfo.CreateNoWindow = True
        ProcessInfo.UseShellExecute = True
        Process = Process.Start(ProcessInfo)
End Sub

我收到此错误:

The filename, directory name or volume label syntax is incorrect

【问题讨论】:

    标签: .net windows vb.net


    【解决方案1】:

    好吧,首先,您在“复制”之后缺少一个空格:

    ExecuteCommand("Copy" & Directory.GetCurrentDirectory & ...
    

    会变成(以当前目录为“C:\MYDIR”为例)

    cmd.exe /kCopyC:\MYDIR
    

    cmd.exe/k 选项后缺少空格不是问题,但看起来很尴尬。我也会放一个。

    其次,"\\myservername -u username -p password C$\Files.txt" 看起来是错误的。按照您的示例,那可能应该是"\\myservername\C$\Files.txt"。此时用户名和密码在 Copy 命令的上下文中没有意义(复制过去的错误?)。

    那么您在问题的“ExecuteCommand...”示例中有一些虚假的(?)换行。可能是这些导致了更多问题,但这很难说。

    在您的ExecuteCommand 方法(或使用调试器)中输出Command 变量的值并检查它是否正确。另外,请先尝试从命令行执行整个操作以确保其正常工作。

    把它们放在一起,我会这样写:

    ExecuteCommand("Copy " & Directory.GetCurrentDirectory & "\Output\Files.txt \\myservername\C$\Files.txt")
    
    ' ...
    
    Public Sub ExecuteCommand(ByVal Command As String)
            Dim ProcessInfo As ProcessStartInfo
            Dim Process As Process
            ProcessInfo = New ProcessStartInfo("cmd.exe", "/K " & Command)
            ProcessInfo.CreateNoWindow = True
            ProcessInfo.UseShellExecute = True
            Process = Process.Start(ProcessInfo)
            ' You might want to wait for the copy operation to actually finish.
            Process.WaitForExit()
            ' You might want to check the success of the operation looking at
            ' Process.ExitCode, which should be 0 when all is good (in this case).
            Process.Dispose()
    End Sub
    

    最后,您可以改用File.Copy。无需为此调用cmd.exe

    File.Copy(Directory.GetCurrentDirectory & "\Output\Files.txt", 
       "\\myservername\C$\Files.txt")
    

    【讨论】:

    • @Christian.K- 首先感谢您的详细解释,如果我使用上述语法 File.Copy(...) 它给了我和错误说明“登录失败..用户名或密码错误" 但可以使用相同的用户名和密码打开远程桌面。
    • 您需要确保用户(最终运行File.Copy 或您的ExecuteCommand)实际上对目标(即`\\myservername\c$`)具有写访问权限。
    • 我正在使用 file.copy,我刚刚检查了那个“C$”。它也具有完全的读写和执行权限。
    猜你喜欢
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 2016-05-23
    • 2016-09-13
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 2021-10-22
    相关资源
    最近更新 更多