【问题标题】:Creating subfolders with PowerShell in multiple parent folders在多个父文件夹中使用 PowerShell 创建子文件夹
【发布时间】:2014-09-22 18:38:40
【问题描述】:

我希望在网络共享的几个不同父文件夹中创建子文件夹。我有大约 900 个左右的客户文件夹,我想添加一个子文件夹。我在一个不是 CSV 的 excel 电子表格中列出了客户,有没有一种简单的方法可以创建这些子文件夹?

New-Item -ItemType 目录 -Path "P:\Customer Folders\Customers A thru D\

我正在使用上述作为目录创建,但我不想使用此命令 900 多次。 -recurse 似乎没有这样做,因为它给了我一个错误。

任何帮助将不胜感激。

【问题讨论】:

  • 你考虑过ForEach($Folder in (Get-ChildItem 'P:\Customer Folders' -Directory)){New-Item -ItemType Directory -Path $Folder.FullName+"\Folder to create"}吗?或者也许将您的 Excel 工作表保存为 CSV 并从那里开始?
  • Excel 表格的格式不正确,它不会正确导入数据。使用 .FullName+ 可以让我运行它并在所有子文件夹中创建文件夹吗?我将如何输入客户名称?我对 PowerShell 还是有点陌生​​。我可以在一个地方创建它,然后使用 -recurse 将空文件夹复制到每个地方吗?
  • 如果不更好地了解您的目录结构,就很难回答这些问题。我建议的代码将在“P:\Customer Folders”的每个子文件夹中创建一个名为“Folder to create”的文件夹。例如:'P:\Customer Folders\Microsoft\Folder to create'、'P:\Customer Folders\Starbucks\Folder to create'、'P:\Customer Folders\Boeing\Folder to create'
  • 为了让您更好地了解,结构是 P:\Customer Folders\Customers A thru D\"Customer Name"\HelpDesk。我正在尝试为每个客户文件夹创建一个 HelpDesk 子文件夹。我尝试在一个小型测试结构上使用您上面提供的那个,但我收到一个错误 - + CategoryInfo : InvalidArgument: (:) [New-Item], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.NewItemCommand跨度>

标签: powershell


【解决方案1】:

好的,我在评论中给出代码时忘记了括号。以下是适合您的方法:

foreach($folder in (gci 'P:\customers a thru d' -directory)){
    new-item -ItemType directory -Path ($folder.fullname+"\Helpdesk")
}

我创建了以下内容进行测试:

C:\Temp\customers 到 d\Microsoft
C:\Temp\customers 直通 d\Starbucks
C:\Temp\customers a thru d\boeing

我运行了上面的代码(根据需要修改了路径),它按预期创建了文件夹。如果你想抑制输出,你可以通过管道将其发送到|Out-Null,但这取决于你。

【讨论】:

  • 老兄,你让我很开心。非常感谢,它就像一个魅力。遗憾的是,我将其标记为答案,我没有声望以其他方式投票。
【解决方案2】:

Get-ChildItem 的目录参数需要 Powershell 3.0 版。我得到以下与 v1 一起工作。

Get-ChildItem -path C:\Test | #replace C:\Test with your structure
Where-Object { $_.PSIsContainer } |
ForEach-Object {
    #Write-host $_.FullName
    new-item ($_.FullName+"\Folder Name Here") -type directory  
}

【讨论】: