【问题标题】:Powershell for creating folders and subfolders from csv用于从 csv 创建文件夹和子文件夹的 Powershell
【发布时间】:2016-11-21 13:18:10
【问题描述】:

我尝试准备一个脚本,该脚本将从 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
}

我想要实现的是拥有这样的 CSV

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

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

非常感谢。

【问题讨论】:

    标签: csv powershell powershell-3.0


    【解决方案1】:

    这应该会给你想要的结果

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

    【讨论】:

      【解决方案2】:

      我试着稍微改进一下脚本。在 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。我在脚本中缺少什么?谢谢

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

          我所做的是将所需的路径放入我的 CSV 文件中。 与上述讨论类似。 “FilePath”可以替换为您有权读取/写入的任何文件路径。 “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 文件有这个: 名称;Testing\A\A.1;Testing\B\B.1;Testing\C\C.1;Testing\D\D.1

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

          • 姓名
          • 测试\A\A.1
          • 测试\B\B.1
          • 测试\C\C.1
          • 测试\D\D.1

          我使用项目符号格式来显示这些在 csv 文件中的单个列中。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2022-01-21
            • 1970-01-01
            • 1970-01-01
            • 2015-06-07
            • 1970-01-01
            • 2020-07-18
            • 1970-01-01
            相关资源
            最近更新 更多