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

Powershell脚本未使用mkdir函数创建文件夹,powershell,Powershell,我希望使用Powershell脚本创建每日文件夹,虽然创建前两个文件夹没有问题,但列表中的第三个文件夹没有创建。下面是我的代码,它是由于某种原因没有创建的原始数据文件夹-有没有关于为什么会发生这种情况的建议 $months = Get-Date -UFormat %b $monthl = Get-Date -UFormat %B $year = Get-Date -UFormat %Y $timestamp = Get-Date -UFormat "%d%m%Y" $folderstamp =

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

$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 & Fulfilment\Fulfilment\CMS\$year\$monthl $year\Investec_AML\$folderstamp"
mkdir "X:\Client Services & Fulfilment\Fulfilment\CMS\$year\$monthl $year\Investec_AML\$folderstamp\Final Output"
mkdir "X:\Client Services & Fulfilment\Fulfilment\CMS\$year\$monthl $year\Investec_AML\$folderstamp\Raw Data"
如果我在Powershell本身上写出那行代码,它将返回LastWriteTime日期01/01/1601?!请参阅下面的屏幕截图链接。该模式似乎显示所有可能的可用模式


从您的屏幕截图中,我可以看到
原始数据
文件夹确实存在。在
模式下
可以看到其属性:

也许您应该进一步调查该文件夹(或链接),以了解它存在的原因,以及它是否是符号链接,以及它指向的位置

无论如何,以下是更具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 & Fulfilment\Fulfilment\CMS\$year\$monthl $year\Investec_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风格的代码:

$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 & Fulfilment\Fulfilment\CMS\$year\$monthl $year\Investec_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”,因此我将把它推广到我们处理的其他使用类似文件夹结构的日常作业中

感谢西奥的整洁代码

$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 & Fulfilment\Fulfilment\CMS\$year\$monthl $year\Investec_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”,因此我将把它推广到使用类似文件夹结构的其他日常工作中

感谢西奥的整洁代码

$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 & Fulfilment\Fulfilment\CMS\$year\$monthl $year\Investec_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
}

1601-01-01只是NTFS的“零”时间,也就是说,
LastWriteTime
根本没有设置。我不知道有什么选项可以显式地关闭它,但是
X:
表明您仍然在映射驱动器上。它可能是网络堆栈的一个工件。输出表明文件夹已创建——请使用
dir
进行后续操作。如果它甚至没有被创建,那么您就遇到了某种错误(名称无效,名称太长?),由于某种原因,这些错误不会传播到操作系统中——同样,这是网络堆栈的一个常见工件。试试普通的
cmd
mkdir
,它应该有同样的问题。我已经检查了目录,但是原始数据文件夹没有显示。使用普通cmd和mkdir返回以下内容:子目录或文件X:\Client Services&employment\employment\CMS\2019\March 2019\Investec\u AML\15-03-2019\Raw Data已存在,但实际文件夹根本不显示?我不认为名称太长,或者它不应该太长,因为最终的输出文件夹正在创建。由于缓存,它可能已经存在,并且不会显示在目录列表中。这是远程SMB共享吗?您可以尝试断开并重新连接。我不确定原因,但在新目录名中使用下划线而不是空格效果很好(原始数据)。。。这对我来说很有用,因为创建它们是为了管理我们的团队(仅限于我们的团队)处理的数据。谢谢你的帮助,杰伦!1601-01-01只是NTFS的“零”时间,也就是说,
LastWriteTime
根本没有设置。我不知道有什么选项可以显式地关闭它,但是
X:
表明您仍然在映射驱动器上。它可能是网络堆栈的一个工件。输出表明文件夹已创建——请使用
dir
进行后续操作。如果它甚至没有被创建,那么您就遇到了某种错误(名称无效,名称太长?),由于某种原因,这些错误不会传播到操作系统中——同样,这是网络堆栈的一个常见工件。试试普通的
cmd
mkdir
,它应该有同样的问题。我已经检查了目录,但是原始数据文件夹没有显示。使用普通cmd和mkdir返回以下内容:子目录或文件X:\Client Services&employment\employment\CMS\2019\March 2019\Investec\u AML\15-03-2019\Raw Data已存在,但实际文件夹根本不显示?我不认为名称太长,或者它不应该太长,因为最终的输出文件夹正在创建。由于缓存,它可能已经存在,并且不会显示在目录列表中。这是远程SMB共享吗?您可以尝试断开并重新连接。我不确定原因,但在新目录名中使用下划线而不是空格效果很好(原始数据)。。。这对我来说很有用,因为创建它们是为了管理我们的团队(仅限于我们的团队)处理的数据。谢谢你的帮助,杰伦!我想这是我的错,我点击了下面的勾号,它从0变为-1。。。我以为点击滴答声会让它从另一个方向来?@columery啊,那没关系。我只是不喜欢(尤其是下层选民)不给出理由就这样做。如果你想通过向上点击三角形来撤销它,那就太好了。对不起,西奥,我在尝试修改时得到了以下信息:谢谢你的反馈!声誉低于15的人所投的票将被记录,但不会改变公开显示的帖子分数。我现在才8点,所以不知道如何解决这个问题you@chillery没关系,没什么大不了的。这里最重要的是代码对你有用。我想这是我的错,我点击了下面的勾号,它从0变为-1。。。我以为点击滴答声会让它从另一个方向来?@columery啊,那没关系。我只是不喜欢(尤其是下层选民)不给出理由就这样做。如果你想通过向上点击三角形来撤销它,那就太好了。对不起,西奥,我在尝试修改时得到了以下信息:谢谢你的反馈!声誉低于15%的人所投的票会被记录下来,但不会改变