在PowerShell错误消息中使用touch命令创建新文件

时间:2015-09-08 02:00:19

标签: git powershell

我的桌面上有一个使用PowerShell创建的目录,现在我正在尝试在其中创建一个文本文件。

我确实将目录更改为新目录,并键入DataSet

这是我收到的错误消息:

touch textfile.txt

为什么不起作用?我是否必须一直使用Git Bash?

11 个答案:

答案 0 :(得分:14)

如果您需要PowerShell中的命令touch,您可以定义一个执行The Right Thing™的功能:

function touch {
  Param(
    [Parameter(Mandatory=$true)]
    [string]$Path
  )

  if (Test-Path -LiteralPath $Path) {
    (Get-Item -Path $Path).LastWriteTime = Get-Date
  } else {
    New-Item -Type File -Path $Path
  }
}

将该功能放在profile中,以便在启动PowerShell时可以使用该功能。

touch定义为别名(New-Alias -Name touch -Value New-Item)在此处不起作用,因为New-Item具有必需参数-Type,并且您无法在PowerShell别名中包含参数定义

答案 1 :(得分:14)

如果您使用的是Windows Powershell,则Mac / Unix触摸的等效命令为:New-Item textfile.txt -type file

答案 2 :(得分:6)

正如Etan Reisner指出的那样,touch不是Windows中的命令,也不是PowerShell中的命令。

如果您想快速创建一个新文件(看起来您对刚更新现有文件日期的用例不感兴趣),可以使用以下命令:

$null > textfile.txt
$null | sc textfile.txt

请注意,第一个默认为Unicode,因此您的文件不会为空;它将包含2个字节,Unicode BOM

第二个使用scSet-Content的别名),defaults to ASCII when used on the FileSystem

如果您使用空字符串(''""[String]::Empty)而不是$null,那么您最终也会有换行符。

答案 3 :(得分:2)

cd进入要在其中创建文件的路径,然后键入...

新项目-项目类型文件yourfilenamehere.filetype

示例

新项目-itemtype文件index.js

答案 4 :(得分:2)

对于在Power Shell中创建单个文件: ni textfile.txt

要同时创建多个文件: touch a.txt,b.html,x.js是linux命令
ni a.txt,b.html,x.js是Windows Power Shell命令

答案 5 :(得分:2)

概括Ansgar Wiechers' helpful answer,以支持:

  • 多个文件作为输入,作为单个参数传递(name: tutorial description: A new Flutter project. environment: sdk: ">=2.12.0 <3.0.0" dependencies: flutter: sdk: flutter another_flushbar: ^1.10.23 auto_route: ^2.2.0 cupertino_icons: ^1.0.2 dartz: 0.10.0-nullsafety.2 firebase_auth: ^1.3.0 firebase_core: ^1.2.1 flutter_bloc: ^7.0.1 freezed_annotation: ^0.14.2 get_it: ^7.1.3 google_sign_in: ^5.0.4 injectable: ^1.4.1 uuid: ^3.0.4 dev_dependencies: flutter_test: sdk: flutter auto_route_generator: ^2.1.0 build_runner: null flutter_lints: ^1.0.0 freezed: ^0.14.2 injectable_generator: ^1.4.1 lint: ^1.5.3 flutter: uses-material-design: true ,与 Unix touch file1 file2 实用程序一样)而不是作为array 参数 (touch),后者是将多个值传递给 单个 参数的 PowerShell 惯用方式。

  • 通配符模式作为输入(仅在定位现有文件时才有意义,以更新它们的上次写入时间戳)。

  • touch file1, file2 以获取有关所执行操作的反馈。

注意:

  • 该函数仅模拟 Unix -Verbose 实用程序的核心功能:

    • 对于现有文件,它将上次写入和上次访问时间戳设置为当前时间点,
    • 而创建不存在的文件,没有内容。
  • 要获得更完整且更符合 PowerShell 习惯的模拟,touch,请参阅 this answer

  • 该函数需要 PowerShell 4 或更高版本,因为使用了 Touch-File 数组方法(尽管它可以很容易地适应早期版本)。

.ForEach()

答案 6 :(得分:1)

@ORM\ColumnNew-ItemNameItemType参数的组合适合我。在我的例子中,为git:

创建一个Path文件
_netrc

<强>参考

答案 7 :(得分:0)

如果您正在使用节点,只需使用此命令,它将安装touch。

npm install touch-cli -g

答案 8 :(得分:0)

这里是touch方法,具有更好的错误处理:

function touch
{
    $file = $args[0]
    if($file -eq $null) {
        throw "No filename supplied"
    }

    if(Test-Path $file)
    {
        throw "file already exists"
    }
    else
    {
        # echo $null > $file
        New-Item -ItemType File -Name ($file)
    }
}

将此功能添加到C:\Program Files\PowerShell\7\Microsoft.PowerShell_profile.ps1(如果不存在,请创建此文件)。

像这样使用它:touch hey.js

答案 9 :(得分:0)

如果你使用的是 npm,首先安装

npm install touch-cli -g

答案 10 :(得分:0)

如何在 PowerShell 中使用它创建 .txt 文件。

New-Item .txt

查看此 website 了解更多信息。