在windows机器上,我得到这个错误
“touch”不能被识别为内部或外部命令、可操作程序或批处理文件。
我遵循这些指令,似乎是linux特定的,但在标准的windows命令行上,它不是这样工作的:
touch index.html app.js style.css
windows中是否有类似于linux / mac os / unix世界中的'touch'命令?为了实现这类命令,我是否需要手工创建这些文件(并修改它们以更改时间戳)?我正在使用节点,这似乎不是很…node-ish……
我很惊讶有这么多答案是错的。在文件中回显任何内容会将文件填充为类似ECHO is ON的内容,而尝试将$nul回显到文件中会将$nul直接放入文件中。此外,对于PowerShell,将$null回显到文件中实际上不会生成一个0kb的文件,而是编码为UCS-2 LE BOM的文件,如果需要确保文件没有字节顺序标记,这可能会变得混乱。
在测试了这里的所有答案并引用了一些类似的答案之后,我可以保证这些答案在每个控制台shell中都可以工作。只需更改文件名。FileExtension到你想要触及的文件的完整路径或相对路径;感谢Keith Russell的COPY NUL FILE。EXT更新:
CMD w/时间戳更新
复制空文件名。FileExtension
这将创建一个新文件,命名为您所放置的任何文件,而不是FileName。FileExtension的大小为0字节。如果文件已经存在,它基本上会原地复制自己来更新时间戳。我想说的是,这是一种变通方法,而不是1:1的触摸功能,但我不知道有任何内置的CMD工具可以在不改变任何其他内容的情况下完成更新文件的时间戳。
CMD w/out时间戳更新
如果不存在文件名。FileExtension拷贝NUL文件名。FileExtension
Powershell与时间戳更新
如果(!(Test-Path文件名。FileExtension -PathType Leaf)){新项目文件名。FileExtension -Type文件}else {(ls文件名。FileExtension)。LastWriteTime = Get-Date}
是的,它将作为一行程序在控制台工作;不需要将它放在PowerShell脚本文件中。
PowerShell的时间戳更新
如果(!(Test-Path文件名。FileExtension -PathType Leaf)){新项目文件名。FileExtension类型文件}
你可以用下面的命令复制touch的功能:
$>>filename
它所做的是尝试执行一个名为$的程序,但是如果$不存在(或者不是一个产生输出的可执行文件),那么它就不会产生输出。它本质上是一个功能上的黑客,但是你会得到以下错误消息:
'$'不能被识别为内部或外部命令,
可操作的程序或批处理文件。
如果你不想要错误信息,那么你可以做以下两件事之一:
type nul >> filename
Or:
$>>filename 2>nul
type命令尝试显示nul的内容,它什么也不做,只是在读取时返回一个EOF(文件的结束)。
2>nul将错误输出(输出2)发送给nul(当写入时忽略所有输入)。显然,type命令使第二个命令(带有2>nul)变得多余,因为它键入更快。但至少你现在有了选择和知识。
其他的答案都少了些什么。Linux touch命令有一个-t选项,它允许您将最后修改的时间设置为任意日期和时间,而不仅仅是当前时间。
将filename.txt的修改日期设置为午夜后30分钟的2012年12月20日。
touch -t 201212210030 filename.txt
要在Windows中获得相同的效果,你需要在PowerShell中,这不能在Cmd中完成。
修改filename.txt文件的创建日期/时间戳:
(Get-Item "D:\Test\filename.txt").CreationTime=("21 December 2012 00:30:00")
修改文件名.txt文件的最后写入日期/时间戳:
(Get-Item "D:\Test\filename.txt").LastWriteTime=("21 December 2012 00:30:00")
更改文件名.txt文件的最后一次访问日期/时间戳:
(Get-Item "D:\Test\filename.txt").LastAccessTime=("21 December 2012 00:30:00")