Powershell脚本没有使用mkdir函数创建文件夹

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Powershell脚本没有使用mkdir函数创建文件夹相关的知识,希望对你有一定的参考价值。

我正在寻找使用Powershell脚本创建每日文件夹,虽然创建前2个文件夹没有问题,但我的列表中的第三个文件夹尚未创建。下面是我的代码,它是由于某种原因没有创建的原始数据文件夹 - 有关为什么会发生这种情况的任何建议?

$months = Get-Date -UFormat %b
$monthl = Get-Date -UFormat %B
$year = Get-Date -UFormat %Y
$timestamp = Get-Date -UFormat "%d%m%Y"
$folderstamp = Get-Date -UFormat "%d-%m-%Y"

mkdir "X:Client Services & FulfilmentFulfilmentCMS$year$monthl $yearInvestec_AML$folderstamp"
mkdir "X:Client Services & FulfilmentFulfilmentCMS$year$monthl $yearInvestec_AML$folderstampFinal Output"
mkdir "X:Client Services & FulfilmentFulfilmentCMS$year$monthl $yearInvestec_AML$folderstampRaw Data"

如果我在Powershell本身上写出那行代码,它会返回LastWriteTime日期01/01/1601 ?!请参见下面的屏幕截图该模式似乎显示所有可用的模式?

powershell screenshot

答案

从截图中,我可以看到Raw Data文件夹确实存在。在Mode下你可以看到它的属性:

d - Directory
a - Archive
r - Read-only
h - Hidden
s - System
l - Reparse point, symlink, etc.

也许你应该调查那个文件夹(或链接)以找出它存在的原因以及它是否是一个符号链接,指向它。

无论如何,这是更多PowerShell风格的代码:

$now         = Get-Date
$months      = $now.ToString("MMM")
$monthl      = $now.ToString("MMMM")
$year        = $now.Year
$timestamp   = $now.ToString("ddMMyyyy")
$folderstamp = $now.ToString("dd-MM-yyyy")

$folderName = "X:Client Services & FulfilmentFulfilmentCMS$year$monthl $yearInvestec_AML$folderstamp"
try {
    New-Item -ItemType Directory -Path $folderName -ErrorAction Stop | Out-Null
    New-Item -ItemType Directory -Path (Join-Path -Path $folderName -ChildPath 'Final Output') -ErrorAction Stop | Out-Null
    New-Item -ItemType Directory -Path (Join-Path -Path $folderName -ChildPath 'Raw Data') -ErrorAction Stop | Out-Null
}
catch {
    Write-Error $_.Exception.Message
}

希望有所帮助

另一答案

无论出于什么原因(可能是Raw这个词?),用一个下划线替换新目录名中的空格已经起作用了'Raw_Data'而不是'Raw Data',所以我会将其推广到我们处理的其他日常工作中类似的文件夹结构。

感谢Theo更整洁的代码!

$now         = Get-Date
$months      = $now.ToString("MMM")
$monthl      = $now.ToString("MMMM")
$year        = $now.Year
$timestamp   = $now.ToString("ddMMyyyy")
$folderstamp = $now.ToString("dd-MM-yyyy")

$folderName = "X:Client Services & FulfilmentFulfilmentCMS$year$monthl $yearInvestec_AML$folderstamp"
try {
New-Item -ItemType Directory -Path $folderName -ErrorAction Stop | Out-Null
New-Item -ItemType Directory -Path (Join-Path -Path $folderName -ChildPath 'Final_Output') -ErrorAction Stop | Out-Null
New-Item -ItemType Directory -Path (Join-Path -Path $folderName -ChildPath 'Raw_Data') -ErrorAction Stop | Out-Null
}
catch {
Write-Error $_.Exception.Message
}

以上是关于Powershell脚本没有使用mkdir函数创建文件夹的主要内容,如果未能解决你的问题,请参考以下文章

使用全局热键调用 powershell 函数

PowerShell脚本-如果不存在则创建组

powershell 脚本 - 创建 zip 文件,不包括某些文件和文件夹

Exchange/Office365 自动处理脚本:常用函数

如何在不同的运行空间中运行函数,PowerShell

powershell脚本隐藏退出码