【问题标题】:Robocopy error code 6 ''The handle is invalid'Robocopy 错误代码 6 ''句柄无效'
【发布时间】:2009-12-18 15:25:20
【问题描述】:

我编写了一个 python 脚本,它使用子进程调用 robocopy 来同步来自远程主机的日志文件。

像这样:

program = 'Robocopy'
options = ['/S']
args.append(program)
args.append(options)
args.append('\\\\%s\%s' % (hostname, source_path))
args.append(local_path)
proc = subprocess.Popen(args=args, shell=True, stdout=cmd_log, stderr=error_log) 

其中 source_path 是远程主机上的路径,local_path 是本地主机上的路径(两个 UNC 路径)。 代码通常在守护进程中运行,每隔几个小时就会启动一次。也可以直接在命令提示符下运行此代码。似乎有时当它在守护进程中运行时,我从 Robocopy 收到错误:

错误代码6:'句柄无效'

但是当我在命令提示符下运行它时,我没有收到任何错误。根据我在网络搜索中的发现,这可能与正在传输的文件上已经打开的文件句柄有关。有没有人有更多关于这个错误的信息以及避免它的方法?

【问题讨论】:

  • 我发现在字符串中使用反斜杠时始终使用原始字符串是一种很好的做法。在您的情况下,您正在转义一些反斜杠而不是其他反斜杠。它不应该与您的问题有关,但养成习惯意味着您将来不会花时间试图弄清楚为什么“\\\\server\nameofshare”不起作用......

标签: python subprocess robocopy


【解决方案1】:

Google 搜索 "robocopy handle is invalid" 建议您使用“备份模式”的 /b 选项可能会成功。

即使这不起作用,我还是建议在文件名被复制(或记录)时添加代码以输出文件名,一旦您确定了特定的失败文件,您也可能会意识到问题是。

【讨论】:

  • 谢谢!我会试一试,然后告诉你结果如何。
猜你喜欢
  • 2021-09-18
  • 2013-08-01
  • 2019-10-16
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-20
相关资源
最近更新 更多