当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 创建文件夹(如果不存在)

作者:精品下载站 日期:2024-12-14 01:58:59 浏览:18 分类:玩电脑

使用 PowerShell 创建文件夹(如果不存在)


在创建文件夹之前,检查它是否不存在非常重要。特别是当您创建将自动运行的脚本时。如果您不检查该目录是否存在,您的脚本可能会遇到错误。

在本文中,我将向您展示如何仅在文件夹不存在时创建新文件夹。

如果不存在则创建一个文件夹

在创建文件夹之前,我们首先要检查它是否存在。为此,我们将使用 Test-Path cmdlet,它将根据结果返回 True 或 False。如果结果为 false,那么我们就知道该目录不存在,我们可以继续创建它。

# Set the folder path
$path = "c:\temp\newfolder\structure\"

# Check if folder not exists, and create it
if (-not(Test-Path $path -PathType Container)) {
    New-Item -path $path -ItemType Directory
}

[玩转系统] 使用 PowerShell 创建文件夹(如果不存在)

这里需要注意的重要一点是 New-Item cmdlet 可以并且将会创建完整的文件夹结构。因此,以上面的示例为例,只有文件夹 c:\temp 存在。但子文件夹 newfolder 和最终文件夹 struction 并不存在。但是,两者都是由 New-Item cmdlet 自动创建的。

我们还使用 -Not 运算符,您可以使用 ! 来缩短它,因为在这种情况下我们只想检查目录是否不存在。

参数 -PathType Container 确保我们只检查现有目录。对于 New-Item cmdlet,我们使用参数 -ItemType Directory,因此我们确定创建的是文件夹,而不是文件。

使用错误处理

通过测试路径检查,我们已经发现了大部分问题,但 New-Item cmdlet 在创建文件夹时仍然可能会失败。例如,您可能没有父文件夹的写入权限,从而阻止您实际创建该文件夹。

因此,当新文件夹尚不存在时创建新文件夹的最佳方法是同时使用 Try-Catch 块。这使您可以捕获任何错误并正确处理它们:

# Set the folder path
$path = "c:\temp\newfolder\structure\"

# Check if folder not exists, and create it
if (-not(Test-Path $path -PathType Container)) {
    try {
        New-Item -path $path -ItemType Directory -ErrorAction stop 
    }
    catch {
        Write-Host "Unable to create Folder" -ForegroundColor Red
        Write-Host $_.Exception.Message -ForegroundColor Red
    }
}

[玩转系统] 使用 PowerShell 创建文件夹(如果不存在)

仅使用新项目

当新文件夹不存在时,也可以仅使用 New-Item cmdlet 创建该文件夹。我们可以使用 -Force 选项,如果目录已存在,它将抑制任何错误。它还将返回文件夹对象,就像实际创建文件夹时 cmdlet 所做的那样。

如果该文件夹已存在,则该文件夹(或子文件夹)中的所有内容都将保留。因此,使用此方法您不会丢失任何数据。这种方法的唯一优点是它更短,并且您可以使用一个命令来创建和获取文件夹对象,无论它是否存在。

# Set the folder path
$path = "c:\temp\newfolder\structure\"

# Create a folder whether is exists or not
New-Item -path $path -ItemType Directory -Force

默认情况下,New-Item cmdlet 返回它创建的文件夹对象。如果您不将其存储在变量中,则会将其输出到控制台。您可以通过在 cmdlet 后面使用管道 Out-Null 来抑制这种情况。

New-Item -path $path -ItemType Directory -Force | Out-Null

总结

编写脚本时,最好清楚自己在做什么。因此,我建议首先使用 Test-Path,并且仅在文件夹不存在时创建具有正确错误处理的文件夹。

希望您喜欢这篇文章,如果您有任何疑问,请在下面发表评论。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯