用于从 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
我尝试准备一个将从 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