平台独立的方式触摸文件?

时间:2011-03-14 11:13:50

标签: language-agnostic cross-platform touch

如何在不使用实际的touch可执行文件的情况下实现平台独立触摸?我不能依赖于touch处于PATH中,甚至不能存在于特定系统中。

2 个答案:

答案 0 :(得分:1)

创建一个空文件并将原始文件+空文件复制回原始文件。我刚刚在Windows上进行了测试,但它确实有效。

C:\tmp>dir \utils\emp*
 Volume in drive C has no label.
 Volume Serial Number is BC80-0D15

 Directory of C:\utils

2011-03-14  11:58                 0 empty_file
               1 File(s)              0 bytes
               0 Dir(s)  27,506,368,512 bytes free

C:\tmp>dir *.gif
 Volume in drive C has no label.
 Volume Serial Number is BC80-0D15

 Directory of C:\tmp

2010-10-08  12:00            20,463 cknight.gif
2009-10-30  17:31         1,298,525 img-big.gif
2009-10-30  17:46           225,992 img.gif
               3 File(s)      1,544,980 bytes
               0 Dir(s)  27,506,368,512 bytes free

C:\tmp>copy /b img.gif+\Utils\empty_file /b img.gif
img.gif
\Utils\empty_file
        1 file(s) copied.

C:\tmp>dir *.gif
 Volume in drive C has no label.
 Volume Serial Number is BC80-0D15

 Directory of C:\tmp

2010-10-08  12:00            20,463 cknight.gif
2009-10-30  17:31         1,298,525 img-big.gif
2011-03-14  12:07           225,992 img.gif
               3 File(s)      1,544,980 bytes
               0 Dir(s)  27,506,368,512 bytes free

C:\tmp>

答案 1 :(得分:1)

触摸是一个非常简单的程序。您可以轻松提取基本步骤并将其作为系统中的子例程实现。见the source code

触摸取决于utime(),它是POSIX,应该可以在大多数平台上使用。

或者,您可以将自己的触摸实现作为可执行文件提供(如果需要从脚本中调用它)。