用于从 csv 创建文件夹和子文件夹的 Powershell

Powershell for creating folders and subfolders from csv

我尝试准备一个将从 CSV 创建文件夹和子文件夹的脚本。

当我像这样创建一个包含 1 列的 CSV 'Name'

Name
XYZ
ZXX
FFF

通过下面的脚本我可以实现文件夹的创建

$folder = "D:\Test\"
$name = Import-Csv D:\Test\Test.csv
Foreach ($line in $name)
{
    New-Item -path $folder -Name $line.Name -Type Directory
}

我想实现的是这样的 CSV

Name;Letter 
XYZ;A
ZXX;B
FFF;B

我希望脚本创建文件夹 $Folder\Letter\Name(因此最终路径是 D:Test\A\XYZ;D:Test\B\ZXX;D:Test\B\FFF)。欢迎任何建议。

非常感谢。

这应该会给你想要的结果

Import-Csv 'D:\Test\Test.csv' -Delimiter ';' |
    % { 
        $path = Join-Path $folder $_.Letter; 
        New-Item -Path $path -Name $_.Name -Type Directory 
    }

我试着稍微改进一下脚本。在 CSV 文件中,名称和字母可以很好地与 DAXaholic 提供的脚本配合使用,但需要在文件夹名称中添加更多子文件夹。我试过了,但它不符合我的需要。

    $folder = "D:\Test\"
    $subfolders = "Volvo","Skoda","Tesla"
    $file = Import-Csv 'D:\Test\Test.csv' -Delimiter ';' 
    $file | 
     % { 
            $path = Join-Path $folder $_.Letter; 
            New-Item -Path $path -Name $_.Name -Type Directory 
    }

foreach ($subfolder in $subfolders) 
{
$file | 
%{
 $path2 = Join-Path $folder $_.Letter $_.Name;
 New-Item -Path $path2$subfolder -Type Directory 
}
    }

我想达到的效果如下。脚本应检查 CSV 文件,在 CSV 文件中创建用户并将其放入文件夹中,并在名称文件夹中创建 3 个子文件夹。例如 D:\Test\A\XYZ\Volvo,Skoda,Tesla。我在脚本中缺少什么?谢谢

如果有人需要类似的脚本,那么这里是解决方案

$folder = "D:\Test\"
$subfolders = "Volvo","Skoda","Tesla"
$file = Import-Csv 'D:\Test\Test.csv' -Delimiter ';' 
$file | 
 % { 
        $path = Join-Path $folder $_.Letter; 
        New-Item -Path $path -Name $_.Name -Type Directory 
}
foreach ($subfolder in $subfolders)
{ 
$file | %{
 $path2 = Join-Path $folder $_.Letter;
 $path3 = Join-Path $path2 $_.Name;
 New-Item -Path $path3$subfolder -Type Directory 
   }
}

我所做的是将所需的路径放入我的 CSV 文件中。 Silmiar 上述讨论。 “FilePath”可以替换为您有权访问的任何文件路径 read/write from/to。 “Folders.csv”是我使用的 CSV 文件的名称。只要 powershell 可以访问它,您就可以随意命名该 csv 文件。而且这是计算机没有文件名问题的东西。大多数计算机会告诉您它是否不喜欢您使用的 csv 文件名。如果没有,PowerShell 会告诉你。

这是我的 PowerShell 代码示例:

$path = "FilePath"
$Name = import-csv -Path 'FilePath\Folders.csv'
foreach ($i in $Name) {
New-Item -Path $path -Name $i.Name -ItemType Directory
}

示例 CSV 文件包含:

Name;Testing\A\A.1;Testing\B\B.1;Testing\C\C.1;Testing\D\D.1

注意:在 CSV 文件中,它看起来更像这样:

Name
Testing\A\A.1
Testing\B\B.1
Testing\C\C.1
Testing\D\D.1

我认为这是合理的代码:

Set-Location "D:\Folder" 
$subfolders = "1.Requested","2.Evidence","3.Complete"
$Folders = Import-Csv D:\Folder\csv\Fodlers.csv 
 
ForEach ($Folder in $Folders) { 
 
New-Item $Folder.Name -type directory 
  Foreach ($subfolder in $subfolders)
   { 
 $path = Join-Path $Folder.Name -ChildPath " ";
 New-Item $path$subfolder -Type Directory 
   }
}  

版权所有:Nguyen Ngo Anh Tuan