寻找有关如何使用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]
我不介意分阶段这样做,只是我不知道从哪里开始。
答案 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
}
上面的代码允许我将项目复制到子文件夹位置。