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

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

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

touch index.html app.js style.css

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


当前回答

在windows命令行如cmd上替换touch命令的一个简单方法是:

type nul > your_file.txt

这将在your_file.txt文件中创建0个字节。

这也是在windows批处理文件中使用的一个很好的解决方案。

另一种方法是使用echo命令:

echo.> your_file.txt

的回声。-将创建一个只有一行空的文件。


如果您需要保存文件的内容,请使用>>而不是>

>   Creates a new file
>>  Preserves content of the file

例子

type nul >> your_file.txt

也可以使用call命令。

在不停止父批处理程序的情况下从另一个批处理程序调用一个批处理程序。call命令接受标签作为调用的目标。

例子:

call >> your_file.txt

--- 或者即使你不想让它变得困难,你也可以安装Windows Linux子系统(WSL)。然后,类型。

wsl touch

or

wsl touch textfilenametoedit.txt

不需要引号。

其他回答

对于一个非常简单的touch版本,它主要用于在当前目录中创建一个0字节的文件,另一种替代方法是创建一个touch.bat文件,并将其添加到%Path%或复制到C:\Windows\System32目录,如下所示:

touch.bat

@echo off
powershell New-Item %* -ItemType file

创建单个文件

C:\Users\YourName\Desktop>touch a.txt

    Directory: C:\Users\YourName\Desktop

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2020-10-14  10:28 PM              0 a.txt

创建多个文件

C:\Users\YourName\Desktop>touch "b.txt,c.txt"

    Directory: C:\Users\YourName\Desktop

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2020-10-14  10:52 PM              0 b.txt
-a----        2020-10-14  10:52 PM              0 c.txt

Also

工作与PowerShell和命令提示符。 使用现有子目录。 如果文件已经存在,则不创建该文件:

New-Item : The file 'C:\Users\YourName\Desktop\a.txt' already exists.

对于多个文件,只创建不存在的文件。 接受逗号分隔的不带空格的文件名列表,如果需要空格则用引号括起来:

C:\Users\YourName\Desktop>touch d.txt,e.txt,f.txt
C:\Users\YourName\Desktop>touch "g.txt, 'name with spaces.txt'"

我很惊讶有这么多答案是错的。在文件中回显任何内容会将文件填充为类似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命令行如cmd上替换touch命令的一个简单方法是:

type nul > your_file.txt

这将在your_file.txt文件中创建0个字节。

这也是在windows批处理文件中使用的一个很好的解决方案。

另一种方法是使用echo命令:

echo.> your_file.txt

的回声。-将创建一个只有一行空的文件。


如果您需要保存文件的内容,请使用>>而不是>

>   Creates a new file
>>  Preserves content of the file

例子

type nul >> your_file.txt

也可以使用call命令。

在不停止父批处理程序的情况下从另一个批处理程序调用一个批处理程序。call命令接受标签作为调用的目标。

例子:

call >> your_file.txt

--- 或者即使你不想让它变得困难,你也可以安装Windows Linux子系统(WSL)。然后,类型。

wsl touch

or

wsl touch textfilenametoedit.txt

不需要引号。

在命令行中使用以下命令:

fsutil file createnew filename  requiredSize

参数信息如下:

fsutil -文件系统实用程序(您正在运行的可执行文件)

文件-触发文件操作

Createnew -执行的操作(创建一个新文件)

文件名-将是文件的字面名称

requiredSize -在创建的文件中分配一个文件大小,单位为字节

使用rem. > file.txt(注意“rem”命令后面的点) 这将创建一个空文件