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

时间:2016-07-18 20:01:39

标签: csv powershell powershell-v3.0

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

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

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
}

我想要实现的是像这样的

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

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

非常感谢。

4 个答案:

答案 0 :(得分:0)

这应该会给你想要的结果

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

答案 1 :(得分:0)

我试着稍微改进一下脚本。在CSV文件中,名称和字母与DAXaholic提供的脚本一起正常工作,但需要在文件夹Name中添加更多子文件夹。我尝试了这个,但它不能正常工作。

    $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。我在剧本中缺少什么?感谢

答案 2 :(得分:0)

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

$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 
   }
}

答案 3 :(得分:0)

我所做的是将所需的路径放在我的CSV文件中。 Silmiar对上述讨论。 "文件路径"可以替换为您有权访问/读取/写入的任何文件路径。 " 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文件包含: 名称;测试\ A \ A.1;测试\ B \ B.1;测试\ C \ C.1;测试\ d \ D.1

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

  • 名称
  • 测试\ A \ A.1
  • 测试\ B \ B.1
  • 测试\ C \ C.1
  • 测试\ d \ D.1

我使用了弹出的格式来显示这些格式在csv文件中的单个列中。