Windows系统中是否有touch命令的等效替代方案?
Windows系统中是否有touch命令的等效替代方案?
嘿,这个问题我太熟了!在Windows里确实没有原生的touch命令,但有好几种简单的替代方法,完全能实现Linux里touch的核心功能——要么创建空文件,要么更新文件的修改/访问时间戳,我给你一一列出来:
一、用CMD命令实现
- 创建空文件:直接用
type nul > 文件名,比如type nul > test.txt。如果目标文件已经存在,这个命令会把文件内容清空,所以要是只想更新时间戳别用这个哦! - 仅更新文件时间戳(不修改内容):用
copy /b 文件名 +,,,比如copy /b test.txt +,,。这里的/b表示二进制模式,+,,是一种特殊写法,意思是给文件追加空内容,最终效果就是更新了文件的修改和访问时间,文件本身内容一点不变。
二、用PowerShell实现
PowerShell的方法更灵活,能精准控制:
- 创建空文件:输入
New-Item -Path 文件名 -ItemType File,比如New-Item -Path test.txt -ItemType File。如果文件已经存在,会提示你是否覆盖,加上-Force参数的话,就会直接更新文件的时间戳而不覆盖内容。 - 单独更新修改时间:如果只想改文件的最后修改时间,用
(Get-Item 文件名).LastWriteTime = Get-Date,比如(Get-Item test.txt).LastWriteTime = Get-Date,这样就能把文件的修改时间设为当前时间啦。
三、自定义touch脚本(和Linux行为完全一致)
要是你经常需要用类似Linuxtouch的功能,不如自己写个批处理脚本:
- 新建一个文本文件,把下面的代码复制进去:
@echo off if "%~1"=="" ( echo Usage: touch filename exit /b 1 ) if exist "%~1" ( copy /b "%~1" +,, > nul ) else ( type nul > "%~1" )
- 把文件保存为
touch.bat,然后把它放到系统环境变量Path包含的文件夹里(比如C:\Windows)。 - 之后不管在CMD还是PowerShell里,直接敲
touch 文件名就行——文件不存在就创建,存在就更新时间戳,和Linux里的touch一模一样!
备注:内容来源于stack exchange,提问作者Isaac
相关产品推荐
相关产品推荐

