创建子文件夹结构

时间:2017-03-13 16:36:06

标签: powershell subdirectory

寻找有关如何使用PowerShell(或其他方法)创建一些文件夹的一些建议。

我有大约120个产品的列表,我已经分配了单独的文件夹。 (使用CSV生成文件夹)

我希望每个产品文件夹都具有相同的子文件夹结构。如下图所示:

[Products]
+-[Product 1]
| +-[1. Datasheet]
| | +-[1.Current]
| | +-[2.Archived]
| | +-[3. Legacy]
| | +-[4. Draft]
| | `-[5. Resources]
| +-[2. Images]
| +-[3. Brochures]
| +-[4. Manuals]
| `-[5. Software]
+-[Product 2]
| +-[1. Datasheet]
| | +-[1.Current]
| | +-[2.Archived]
| | +-[3. Legacy]
| | +-[4. Draft]
| | `-[5. Resources]
| +-[2. Images]
| +-[3. Brochures]
| +-[4. Manuals]
| `-[5. Software]
:
:

基本上每个子文件夹的第一层都是:

[1. Datasheet][2. Images][3. Brochures][4. Manuals][5. Software]

其中每一项都包含以下内容:

[1.Current][2.Archived][3. Legacy][4. Draft][5. Resources]

我不介意分阶段这样做,只是我不知道从哪里开始。

2 个答案:

答案 0 :(得分:1)

这可行:

$workingdir = 'c:\temp'

$products = Get-Content c:\temp\listofproducts.txt

$rootfolders = @(
    'Datasheet'
    'Images'
    'Brochures'
    'Manuals'
    'Software'
)

$subfolders = @(
    'Current'
    'Archived'
    'Legacy'
    'Draft'
    'Resources'
)

foreach ($product in $products) 
{
    $rootcount = 0
    foreach ($root in $rootfolders) 
    {
        $rootcount++
        $subcount = 0
        foreach ($sub in $subfolders) 
        {
            $subcount++
            mkdir (Join-Path $workingdir ("$product\$rootcount. $root\$subcount. $sub"))
        }
    }
}

或者您可以创建第一个产品文件夹,然后复制并粘贴它,然后重命名产品

答案 1 :(得分:0)

感谢您的投入。

管理找到一个对我有用的策略,所以如果它对我这样的任何人都有用的话会分享它。

使用以下3位代码的组合来实现我所需要的:

# Create Folders from CSV

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

上面的代码允许我从Excel制作的CSV列表中创建一个大的文件夹列表。

# Add a Subfolder

foreach($folder in (gci 'Z:\Products' -directory)){
    new-item -ItemType directory -Path ($folder.fullname+"\subfolder")
}

以上代码让我使用子文件夹填充文件夹列表。我一次添加一个。

# Copy a file to folder

$folders = Get-ChildItem Z:\Products
foreach ($folder in $folders.name){
Copy-Item -Path "Z:\Datasheet\changelog.txt" -Destination "Z:\Products\$folder" -Recurse
}

上面的代码允许我将项目复制到子文件夹位置。