使用 Windows PowerShell 创建目录

Marion Paul Kenneth Mendoza 2023年1月30日
  1. 在 PowerShell 中使用 [System.IO] 命名空间创建目录
  2. 在 PowerShell 中使用文件系统对象创建目录
  3. 在 PowerShell 中使用 New-Item Cmdlet 创建目录
  4. 在 PowerShell 中使用 md Legacy 命令创建目录
使用 Windows PowerShell 创建目录

在 Windows PowerShell 中,有多种方法可以创建可以完全集成到脚本中的文件目录或文件夹。本文将展示如何使用 Windows PowerShell 创建它们。

在 PowerShell 中使用 [System.IO] 命名空间创建目录

使用 system.io 命名空间中的目录 .NET 框架类是可能的。要使用 Directory 类,请使用 CreateDirectory 静态方法并提供新文件夹位置的路径。

此处显示了此技术。

[System.IO.Directory]::CreateDirectory("C:\test\newfolder")

当上面的命令运行时,它返回一个 DirectoryInfo 类。但是,我们不一定推荐这种方法,但它目前正在运行并且可用。

在 PowerShell 中使用文件系统对象创建目录

创建目录的另一种方法是使用 Windows PowerShell 中的 Scripting.FileSystemObject 对象。

此方法与 VBScript 和其他脚本语言用于处理文件系统的对象相同。它快速且相对易于使用。

创建对象后,Scripting.FileSystemObject 公开一个 CreateFolder 方法。CreateFolder 方法接受一个字符串,表示创建文件夹的路径。

运行后,一个对象包含了新创建的目录的路径和其他信息。

$fso = New-Object -ComObject Scripting.FileSystemObject
$fso.CreateFolder('C:\test1')

在 PowerShell 中使用 New-Item Cmdlet 创建目录

本机 Windows PowerShell 命令也可用于创建目录。一种方法是使用 New-Item cmdlet。

New-Item -Force -Path c:\test3 -ItemType Directory

使用时,-Force 开关参数将覆盖已创建的现有文件夹。相反,我们可以使用 Test-Path cmdlet 来检查目录是否存在。

在下面的示例中,我们可以创建一个脚本块来检查目录是否存在。如果目录存在,则不会创建目录。

这种语法是避免 -Force 开关参数的一种方法。

$path = "C:\temp\NewFolder"

if(!(test-path $path))
{
      New-Item -ItemType Directory -Path $path
}

假设我们将此命令的输出与前一个 .NET 命令的输出进行比较。结果是一样的,因为 New-Item cmdlet 和 [System.IO.Directory]::CreateDirectory 命令返回一个 DirectoryInfo 对象。

也可以通过省略 -Path 参数名称并仅提供完整路径作为具有 ItemType 语法的数据类型字符串来缩短 New-Item 命令。此处显示了此修改后的命令。

New-Item c:\test4 -ItemType directory

有些人可能会抱怨在老式的命令解释器 cmd 中创建目录更容易,因为他们只需要键入 md——而键入 md 无疑比键入 New-Item 命令更容易。

在 PowerShell 中使用 md Legacy 命令创建目录

前面的示例介绍了使用 Windows PowerShell 使用 md 函数创建目录(文件夹)的第四种方法。

使用 md 命令的优点是速度更快,因为它已经知道你将创建一个目录。因此,你可以保留 ItemType 参数并直接键入完整路径。

md c:\test5
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

相关文章 - PowerShell Directory