在windows机器上,我得到这个错误

“touch”不能被识别为内部或外部命令、可操作程序或批处理文件。

我遵循这些指令,似乎是linux特定的,但在标准的windows命令行上,它不是这样工作的:

touch index.html app.js style.css

windows中是否有类似于linux / mac os / unix世界中的'touch'命令?为了实现这类命令,我是否需要手工创建这些文件(并修改它们以更改时间戳)?我正在使用节点,这似乎不是很…node-ish……


当前回答

如果你在电脑上安装了Cygwin,你可以简单地使用提供的可执行文件进行触摸(也可以通过windows命令提示符):

C:\cygwin64\bin\touch.exe <file_path>

其他回答

假设文件存在,您只需要更新时间戳。

type test.c > test.c.bkp && type test.c.bkp > test.c && del test.c.bkp

我很惊讶有这么多答案是错的。在文件中回显任何内容会将文件填充为类似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类型文件}

Windows本身不包含触摸命令。

您可以使用任何可用的公共版本,也可以使用您自己的版本。将此代码保存为touch。CMD并将其放在路径中的某个地方

@echo off
    setlocal enableextensions disabledelayedexpansion

    (for %%a in (%*) do if exist "%%~a" (
        pushd "%%~dpa" && ( copy /b "%%~nxa"+,, & popd )
    ) else (
        type nul > "%%~fa"
    )) >nul 2>&1

它将遍历它的参数列表,对于每个存在的元素,更新文件时间戳,否则,创建它。

最简单的解决方案是:

。> myfile.txt

你会得到一个错误,但是文件创建了:

答案是错误的,它只在文件不存在时工作。如果文件存在,使用第一个不执行任何操作,第二个在文件末尾添加一行。

正确答案是:

copy /b filename.ext +,,

我在这里找到了:https://superuser.com/questions/10426/windows-equivalent-of-the-linux-command-touch/764721#764721