Windows相当于'touch'(即node.js创建index.html的方式)

Cur*_*ode 160 cmd

在Windows机器上我收到此错误

'touch'不被识别为内部或外部命令,可操作程序或批处理文件.

当我按照说明做:

touch index.html app.js style.css
Run Code Online (Sandbox Code Playgroud)

有没有相当于使用'触摸'的窗户?我是否需要手动创建这些文件(并修改它们以更改时间戳)以实现此类命令?这似乎不是......节点...

Vla*_*den 232

在cmd窗口类型中:

type nul > your_file.txt
Run Code Online (Sandbox Code Playgroud)

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

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

echo.> your_file.txt
Run Code Online (Sandbox Code Playgroud)

回声. - 将创建一个空行中的文件.

  • 答案是错误的,只有在文件不存在时才有效.如果文件存在,则使用`>>`,第一个不执行任何操作,第二个在文件末尾添加一行.正确的答案是https://superuser.com/questions/10426/windows-equivalent-of-the-linux-command-touch/764721#764721 (12认同)
  • 在 Windows 7 上,第一个选项会产生一个可怕的对话框,然后您会在控制台中看到“拒绝访问”。第二个选项工作得很好! (2认同)
  • @stenci - 我刚刚在一个不存在的文件上尝试过,它运行得很好.它创建了文件确定.也许你缺乏管理权限? (2认同)
  • @stenci 超级用户链接很棒。您应该将其发布为答案。 (2认同)

MC *_* ND 58

Windows本身不包含touch命令.

您可以使用任何可用的公共版本,也可以使用自己的版本.保存此代码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
Run Code Online (Sandbox Code Playgroud)

它将迭代它的参数列表,并且对于每个元素(如果存在),更新文件时间戳,否则,创建它.


Aar*_*ark 30

您可以使用此命令:ECHO >> filename.txt

它将在当前文件夹中创建具有给定扩展名的文件.

更新:

对于空文件使用:复制NUL filename.txt

  • 就像触摸一样,如果文件存在,这将不会覆盖文件:`type NUL >> filename` (23认同)
  • 甚至更好`类型NUL>文件名`(创建一个0字节文件) (8认同)
  • 这是添加"ECHO开启"的好方法.到你的文件. (3认同)
  • 这不会更新现有文件的时间戳。 (2认同)

ste*_*nci 25

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

正确答案是:

copy /b filename.ext +,,
Run Code Online (Sandbox Code Playgroud)

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

  • 当文件不存在时,这个答案不起作用。(CMD 产生错误。) (2认同)

max*_*pan 16

在你的机器上安装 npm

在命令提示符下运行以下命令。

npm install touch-cli -g
Run Code Online (Sandbox Code Playgroud)

现在您将能够使用 touch cmd。

  • Nodejs 开发人员会喜欢你的答案 (6认同)

Ofe*_*ber 11

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

fsutil file createnew filename  requiredSize
Run Code Online (Sandbox Code Playgroud)

参数信息如下:

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

file - 触发文件操作

createnew - 要执行的操作(创建新文件)

filename - 字面意思是文件的名称

requiredSize - 将在创建的文件中分配文件大小(以字节为单位)

  • 需要一些解释才能将其视为体面的答案。不清楚这五个字是什么意思。 (2认同)
  • 对我有用......但 requiredSize 的事情很奇怪......该命令只是用数千个`NULL`填充你的新文件......很奇怪......所以只需使用0......如果你跳过所需尺寸 ... (2认同)

kay*_*eck 10

我很惊讶这里有多少答案是错的.在文件中回送任何东西都会在文件中填充类似的内容ECHO is ON,并且尝试回显$nul到文件中将$nul文本放入文件中.此外,对于PowerShell,回显$null到文件中实际上不会生成0kb文件,而是编码为UCS-2 LE BOM,如果您需要确保文件没有字节顺序标记,则可能会变得混乱.

在测试了所有答案并引用了一些类似的答案之后,我可以保证每个控制台shell都能正常工作.只需更改FileName.FileExtension为您想要的文件的完整路径或相对路径touch:

CMD

COPY NUL FILE.EXT

这将创建一个名为您放置的任何名称的新文件,而不是copy NUL FileName.FileExtension长度为0字节.除了更新时间戳之外,它不会对该文件做任何事情,如果它已经存在了FileName.FileExtension复制操作,类似但可能不完全相同的touch工作方式.我说这是一种解决方法而不是1:1的功能,但我不知道CMD的任何内置工具可以在不改变任何其他内容的情况下完成更新文件的时间戳.

电源外壳

if not exist FileName.FileExtension copy NUL FileName.FileExtension

它具有与CMD版本相同的功能.除了它的时间戳之外,它不会弄乱现有文件,并且它将创建一个全新的空文件,无论你决定使用什么代替if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file} else {(ls FileName.FileExtension ).LastWriteTime = Get-Date}.是的,它可以在控制台中作为单线程工作; 无需将其放在PowerShell脚本文件中.

如果我不想更改时间戳怎么办?

如果您不想修改现有文件的时间戳,我们可以删除if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file}-clauses.

CMD

ECHO is ON

电源外壳

$nul

  • 真棒,RoG!我已经更新了答案以解决此问题:) (2认同)
  • 这是最好的答案。但是,我仍然会通过将“fsutil file CreateNew FileName.FileExtension 0”替换为“copy NUL Filename.FileExtension”来改进它,因为后者更短并且执行相同的操作。 (2认同)

Kel*_*yne 7

您可以使用以下命令复制touch功能:

$>>filename
Run Code Online (Sandbox Code Playgroud)

这样做是试图执行一个被调用的程序$,但是如果$不存在(或者不是产生输出的可执行文件)那么它就不会产生输出.它本质上是对功能的破解,但是您将收到以下错误消息:

'$'不被识别为内部或外部命令,可操作程序或批处理文件.

如果您不想要错误消息,那么您可以执行以下两项操作之一:

type nul >> filename
Run Code Online (Sandbox Code Playgroud)

要么:

$>>filename 2>nul
Run Code Online (Sandbox Code Playgroud)

type命令试图显示nul的内容,它在读取时只返回EOF(文件结尾).

2>nul将错误输出(输出2)发送到nul(写入时忽略所有输入).显然,命令会使第二个命令(with 2>nul)type变为冗余,因为它可以更快地输入.但至少你现在有了选择和知识.


小智 6

使用 PowerShell,键入:ni index.htmlni style.cssni app.js

ni <filename>.<extension>
Run Code Online (Sandbox Code Playgroud)


Oli*_*eld 5

在Windows Powershell终端中,没有命令 - 既不是type也不echo需要 - 模拟Unix/Mac OS X的'touch'命令.只需使用以下简写:

$null > filename
Run Code Online (Sandbox Code Playgroud)

这将在您当前位置创建一个名为"filename"的空文件.使用您可能需要的任何文件扩展名,例如'.txt'.

资料来源:https://superuser.com/questions/502374/equivalent-of-linux-touch-to-create-an-empty-file-with-powershell(见评论)


Bor*_*ris 5

如前所述

echo >> index.html
Run Code Online (Sandbox Code Playgroud)

它可以是任何文件,具有任何扩展名然后做

notepad index.html
Run Code Online (Sandbox Code Playgroud)

这将在记事本编辑器中打开您的文件


Rag*_*eer 5

在Windows Power Shell上,可以使用以下命令:

New-Item <filename.extension>
Run Code Online (Sandbox Code Playgroud)

要么

New-Item <filename.extension> -type file
Run Code Online (Sandbox Code Playgroud)

注意:New-Item可以替换为其别名ni

  • 这是当今 Windows 世界的真正答案,其中 PowerShell 是默认的命令外壳程序。 (3认同)

rbe*_*nto 5

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

触摸蝙蝠

@echo off
powershell New-Item %* -ItemType file
Run Code Online (Sandbox Code Playgroud)

创建单个文件

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

    目录:C:\Users\你的名字\桌面

模式 LastWriteTime 长度 名称
---- ------------- ------ ----
-a---- 2020-10-14 10:28 PM 0 a.txt

创建多个文件

C:\Users\YourName\Desktop>触摸“b.txt,c.txt”

    目录:C:\Users\你的名字\桌面

模式 LastWriteTime 长度 名称
---- ------------- ------ ----
-a---- 2020-10-14 10:52 PM 0 b.txt
-a---- 2020-10-14 10:52 PM 0 c.txt

  • 可与 PowerShell 和命令提示符一起使用。
  • 适用于现有子目录。
  • 如果文件已存在,则不创建文件:
新项目:文件“C:\Users\YourName\Desktop\a.txt”已存在。
  • 对于多个文件,仅创建不存在的文件。
    • 接受以逗号分隔的文件名列表,不带空格,或者如果需要空格,则用引号引起来:
C:\Users\YourName\Desktop>touch d.txt,e.txt,f.txt
C:\Users\YourName\Desktop>touch "g.txt, '带有空格的名称.txt'"