【问题标题】:query file write status via batch (CMD client to BASH server)通过批处理查询文件写入状态(CMD客户端到BASH服务器)
【发布时间】:2012-06-26 22:22:52
【问题描述】:

简短的故事:需要一种方法从客户端(使用 CMD 批处理)获取服务器上文件的写入状态(使用 BASH)。

长期潜伏者,首次海报。我对我要查找的内容的变体进行了多次搜索,但尚未找到足够的数据。

我正在用 CMD 编写一个批处理文件(因为客户端可以是安装了未知软件包的任何 WinOS [XP - up])。该批次使用 puTTY 的“plink”通过 SSH 连接到服务器。一旦连接到服务器,plink 就会执行命令将数据写入新文件。 写入该文件后,我使用 PSCP 将文件复制到客户端 到目前为止,一切都很好;我已经成功地完成了这一切。

该文件的创建是即时的,但写入所有数据所需的时间是未知/可变的。因此,我需要一种自动化方法来确定文件何时完成,然后复制它。在我的情况下,简单地使用超时/睡眠 XX 秒是不可行的。

到目前为止,我采取的方法(到目前为止还没有成功)是使用“stat -c '%s' filemane”重复抓取文件大小并循环运行,直到grab1 EQU grab2,指示一个完整的文件。我发现这很困难,因为我无法将 stat 的输出放入 CMD 批处理中进行处理。

Q1:这是(进入 CMD for 循环的统计结果)最好的方法吗?也许 BASH 中存在一些东西?

Q2:如果 Q1 为真,关于如何将统计结果作为变量放入 CMD 批处理以解析/分析数据的任何想法?

提前感谢您的建议和您的宝贵时间。 DCT

【问题讨论】:

  • 为什么不能在 PLINK 退出前让写文件的命令完成?
  • 我无法控制创建/写入文件的程序。一旦我发出“制作文件”命令,它会以成功消息进行响应,但是文件不一定会完成。如果成功消息“连接”到文件完成,我就不必解决这个问题。
  • “我发现这很困难,因为我无法将 stat 的输出放入 CMD 批处理中进行处理。”我建议使用 WSH/VBScript 而不是 CMD 来处理这样的事情,因为您描述的将命令的输出输入到 CMD.EXE 进行处理时遇到的困难。
  • 我能够将 stat 的输出保存到 cmd 中,方法是将 stat 字符串保存为本地文件,然后将该文件拉入批处理中的变量中。我仍在研究比较文件 a 和文件 b 的逻辑……速度很慢,但正在取得进展。谢谢!

标签: bash batch-file cmd


【解决方案1】:

让写入文件的命令使用临时文件名写入文件。因此,如果将其命名为xyz.txt,则将其写入文件名tmpxyz.txt.tmp,那么最后一步将是重命名。

这样你就可以检查命名文件是否存在。

我发现,通常给文件一个唯一的名称是个好主意,可能包含日期和时间。

【讨论】:

  • 感谢本的回复。我需要确定文件何时完成写入。如果程序还没有完成对文件的写入,那么传输它对我没有好处。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 2010-09-13
  • 1970-01-01
  • 2016-03-19
  • 2012-06-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多