【问题标题】:How to write to windows file properties in Ruby?如何在 Ruby 中写入 Windows 文件属性?
【发布时间】:2018-07-30 17:26:37
【问题描述】:

我想在 Windows 上的文件属性中创建一个属性并存储一个值。您可以在编写单击文件属性>详细信息时查看此类属性。如何使用 Ruby 在此处创建新的属性/值?[![在此处输入图像描述][1]][1

【问题讨论】:

  • IIRC NTFS 允许通过 ADS(替代数据流)自定义属性,但多年来一直没有考虑过这一点。您必须使用特定于 Windows 的库来执行此操作。
  • 我不知道你是否可以创建一个 new 属性。您能否详细描述一下您认为的预期结果(无论使用何种语言)?
  • 我有一个 zip 文件,在一堆有效的 xml 文件中,有一个名为 md5 哈希的空白文件(在创建此 zip 时生成)。然后我有一个 java 程序,它读取该 zip 中的内容并计算一个 md5,然后使用 zip 中的哈希检查其计算。我不想将“目标”哈希作为文件存储在 zip 中。

标签: ruby io


【解决方案1】:

这些属性是特定于 Windows 平台的,我相对肯定 Ruby 没有内置机制来改变它们。

这意味着您要么必须搜索可以为您执行此操作的 gem,要么更简单的方法是简单地调用平台命令来更改它们。 attrib 命令用于更改这些,可以使用system 调用。

基本语法是这样的:

attrib [+ attribute | - attribute] [pathname]

不能只添加你想要的任何属性,有特定的标志,它们每个都意味着什么。

  • R = 只读
  • H = 隐藏
  • S = 系统
  • D = 目录
  • A = 存档
  • C = 压缩
  • E = 加密
  • N = 未编入索引
  • L = 重新解析点
  • O = 离线
  • P = 稀疏文件
  • I = 未将内容编入索引
  • T = 临时

所以,如果你想添加“隐藏”属性,并删除“只读”属性...

system 'attrib +H -R myfile.txt'

这可能不是标志的完整列表,但绝对是最常见的。不幸的是,您不能只添加任意字符串,并且更改它们会影响 Windows 处理文件的方式。

【讨论】:

  • 很好的建议。 IMO 一颗宝石对此完全是矫枉过正。 Ruby 深受 Perl 的启发,因此使用它来粘合现有工具是它的强项之一!
  • "compressed" 属性没有显示给我,并且在描述中遗漏了 attrib /?
猜你喜欢
  • 2011-02-16
  • 1970-01-01
  • 2013-12-05
  • 2023-04-01
  • 1970-01-01
  • 2016-02-27
  • 2011-04-06
  • 1970-01-01
相关资源
最近更新 更多