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

时间:2015-05-03 07:20:46

标签: cmd

在Windows机器上我收到此错误

  

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

当我按照instructions执行操作时:

touch index.html app.js style.css

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

20 个答案:

答案 0 :(得分:185)

在cmd窗口中输入:

type nul > your_file.txt

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

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

echo.> your_file.txt

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

于2019-04-01编辑:

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

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

实施例

type nul >> your_file.txt

答案 1 :(得分:55)

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

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

答案 2 :(得分:26)

您可以使用此命令:ECHO>> FILENAME.TXT

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

<强>更新

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

答案 3 :(得分:18)

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

正确答案是:

copy /b filename.ext +,,

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

答案 4 :(得分:8)

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

fsutil file createnew filename  requiredSize

参数信息如下:

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

file - 触发文件操作

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

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

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

答案 5 :(得分:7)

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

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

CMD

if not exist FileName.FileExtension (fsutil file CreateNew FileName.FileExtension 0) else (copy /b FileName.FileExtension +,,)

这将创建一个新文件,命名为您放置的所有文件,而不是FileName.FileExtension,文件的长度为0个字节。如果使用else的复制操作已经存在,除了更新时间戳,它不会对该文件做任何事情,与touch的工作方式相似,但可能并不完全相同。我想说这比1:1功能更能解决问题,但是我不知道有任何内置的CMD工具可以在不更改文件其他任何内容的情况下完成文件时间戳的更新。

Powershell

if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file} else {(ls FileName .FileExtension ).LastWriteTime = Get-Date}

它具有与CMD版本相同的功能。除了时间戳,它不会与现有文件混淆,并且它将创建一个全新的空文件,其中包含您决定使用的FileName.FileExtension位置。是的,它将在控制台中作为一个单一的衬套工作;无需将其放置在PowerShell脚本文件中。

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

如果您不想修改现有文件的时间戳,我们可以删除else子句。

CMD

if not exist FileName.FileExtension fsutil file CreateNew FileName.FileExtension 0

PowerShell

if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file}

答案 6 :(得分:6)

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

$>>filename

这样做的目的是尝试执行一个名为$的程序,但如果$不存在(或者不是产生输出的可执行文件),则不会产生任何输出。它本质上是对功能的破解,但是您将收到以下错误消息:

  

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

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

type nul >> filename

或者:

$>>filename 2>nul

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

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

答案 7 :(得分:5)

无需命令 - typeecho - 都无需在Windows Powershell终端中模拟Unix / Mac OS X的“touch”命令。只需使用以下简写:

$null > filename

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

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

答案 8 :(得分:4)

在Windows 10的Visual Code Studio终端中,这是我创建新文件的工作:

type > hello.js
echo > orange.js
ni > peach.js

答案 9 :(得分:3)

在你的机器上安装 npm

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

npm install touch-cli -g

现在你可以使用touch cmd了。

答案 10 :(得分:3)

如上所述

echo >> index.html

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

notepad index.html

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

答案 11 :(得分:3)

您还可以在Windows命令窗口(cmd.exe)中使用copy con [filename]

C:\copy con yourfile.txt [enter]
C:\CTRL + Z [enter] //hold CTRL key & press "Z" then press Enter key.
^Z
    1 Files Copied.

这将在本地目录中创建一个名为yourfile.txt的文件。

答案 12 :(得分:2)

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

New-Item <filename.extension>

New-Item <filename.extension> -type file
  

注意:新项可以替换为其别名 ni

答案 13 :(得分:1)

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

@import "~jquery-confirm/dist/jquery-confirm.min.css";

答案 14 :(得分:1)

Raghuveer在其answer中指出,niNew-Item的PowerShell别名,因此您可以使用{{1 }},而不是触摸。

如果您更喜欢键入ni而不是touch,则可以为PowerShell ni cmdlet设置touch别名。

在Windows PowerShell中创建 touch 命令:

在PowerShell提示符下,定义新别名。

New-Item

现在,触摸命令的工作原理几乎与您期望的相同。唯一的区别是,您需要用逗号分隔文件列表。

Set-Alias -Name touch -Value New-Item

请注意,这仅设置PowerShell的别名。如果您不需要PowerShell,则可以设置WSL或对Windows使用bash。

不幸的是,一旦您结束PowerShell会话,别名将被忘记。要使别名永久化,您必须将其添加到PowerShell用户配置文件中。

在PowerShell提示符下:

touch index.html, app.js, style.css

将别名定义添加到个人资料并保存。

答案 15 :(得分:1)

对于非常简单的touch版本(通常用于在当前目录中创建0字节文件),另一种方法是创建touch.bat文件并将其添加到{{ 1}}或将其复制到%Path%目录,如下所示:

touch.bat

C:\Windows\System32

创建单个文件

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

  • 可与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'"

答案 16 :(得分:0)

如果您的PC中已安装Cygwin,则可以简单地使用提供的可执行文件进行 touch (也可以通过Windows命令提示符):

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

答案 17 :(得分:0)

我使用cmder(命令行模拟器)

它允许您在Windows计算机上运行所有Linux命令。

可以从https://cmder.net/

下载

我真的很喜欢

答案 18 :(得分:0)

简单,使用txt文件的示例

echo $null >> filename.txt

答案 19 :(得分:-1)

是的,你可以使用Node for Touch我只是使用它,它在Windows Cmd或gitbash中运行良好

enter image description here