2017-02-10 981 views
0

我正在试图解析文件夹中的文件名并将文件的部分存储在变量中。检查!然后我想要采取其中一个变量,并检查该文件夹名称是否存在于不同的位置,以及它是否不创建它。如果我使用Write-Host,文件夹名称是有效的路径,并且文件夹名称不存在,但在执行脚本时仍不会创建文件夹。Powershell创建文件夹如果不存在

如果文件夹不存在,我应该怎么做?

$fileDirectory = "C:\Test\" 
$ParentDir = "C:\Completed\" 
foreach ($file in Get-ChildItem $fileDirectory){ 

    $parts =$file.Name -split '\.' 

    $ManagerName = $parts[0].Trim() 
    $TwoDigitMonth = $parts[1].substring(0,3) 
    $TwoDigitYear = $parts[1].substring(3,3) 

    $FolderToCreate = Join-Path -Path $ParentDir -ChildPath $ManagerName 

    If(!(Test-Path -path "$FolderToCreate\")) 
    { 
     #if it does not create it 
     New-Item -ItemType -type Directory -Force -Path $FolderToCreate 
    } 

} 
+0

试试这个: 新建项目-ItemType目录-Force -Path C:\路径\这\ \可能还是\ \可能不存在\ –

回答

5
if (!(Test-Path $FolderToCreate -PathType Container)) { 
    New-Item -ItemType Directory -Force -Path $FolderToCreate 
} 
+0

完美的作品!谢谢 – BellHopByDayAmetuerCoderByNigh

0

其他的解决办法:

if (![System.IO.Directory]::Exists($FolderToCreate)) 
{ 
    New-Item -ItemType Directory -Force -Path $FolderToCreate 
} 
1

试试这个: 关键是(-Force),它会检查每一个子目录,当他们不存在,它只会创建它并去下一个,永远不会抛出一个错误。

在下面的例子中,你需要7个嵌套的子目录,只需一行就可以创建任何不存在的东西。

另一点,你可以重新运行它的时间和它的设计永远不会抛出一个错误!

New-Item -ItemType Directory -Force -Path C:\Path\That\May\Or\May\Not\Exist 
+0

虽然这段代码片段是受欢迎的,并且可能会提供一些帮助,但它会[如果它包含解释](/ meta.stackexchange.com/q/114762)*如何解决该问题将会[大大改进。没有这些,你的答案就没有什么教育价值了 - 记住,你正在为将来的读者回答这个问题,而不仅仅是现在问的人!请编辑您的答案以添加解释,并指出适用的限制和假设。 –

+0

Upvoting指出需要Force来创建整棵树。 – GermanC

相关问题