我一直在使用此脚本通过文本文件创建文件夹。如何添加子文件夹?
for /f "tokens=* delims=," %d in (Panels.txt) do md %d
目前,该脚本将文件夹 Panel-A、Panel-B 等制作到 Panel-Z。
我需要每个 Panel-* 文件夹下的子文件夹,名为:
- 2014_产品
- 2013_产品
新的文件夹结构如下:
- 面板-A\2014_产品
- 面板-A\2013_产品
- 面板-B\2014_产品
- 面板-B\2013_产品
- 。
- 。
- 面板-Z\2014_产品
- 面板-Z\2013_产品
如何添加子文件夹?
答案1
您可以使用 PowerShell 来实现这一点。我还没有测试过下面的方法,但它应该可行。
- 在您想要开始的文件夹的根目录中创建一个 CSV 文件。
- 最好使用 Excel 或其他电子表格编辑器,然后“另存为”逗号分隔的 CSV。
- 命名文件
FolderNames.csv
- 创建两列,分别包含标题
Name
和Type
- 将每个面板文件夹的名称放在名称列中,并
Folder
放在类型列中。 - 将每个产品文件夹的名称(每个只能输入一次,而不是针对每个面板/产品组合)放在名称列中,并放在
Subfolder
类型列中。
- 打开一个新的 PowerShell 控制台。
- 导航到包含
FolderNames.csv
- 运行以下命令:
$Folders=Import-Csv FolderNames.csv;$Folders|?{$_.Type-eq'Folder'}|%{$ParentName=$_.Name;New-Item "$ParentName" -ItemType Directory;$Folders|?{$_.Type-eq'Subfolder'}|%{$ChildName=$_.Name;New-Item "$ParentName\$ChildName" -ItemType Directory}}
上面的命令实际上是一个浓缩成(有点长)一行的脚本。下面是扩展版和注释版:
# Import FoldersNames.csv into a variable called $Folders
# This will create an array of objects which have the Name and Type properties as defined in the CSV.
$Folders=Import-Csv FolderNames.csv;
# Filter $Folders down to just objects with a Type value of 'Folder'.
# ? is a built-in alias for Where-Object.
$Folders|?{$_.Type-eq'Folder'}|
# Send the filtered objects into a ForEach-Object loop.
# % is a built-in alias for ForEach-Object.
%{
# Store the current object's Name in $ParentName.
$ParentName=$_.Name;
# Create a new directory named $ParentName.
New-Item "$ParentName" -ItemType Directory;
# Filter $Folders down to just objects with a Type value of 'Subfolder'.
$Folders|?{$_.Type-eq'Subfolder'}|
# Send the filtered objects into a ForEach-Object loop.
%{
# Store the current object's Name in $ChildName.
$ChildName=$_.Name;
# Create a new subfolder in $ParentName called $ChildName.
New-Item "$ParentName\$ChildName" -ItemType Directory
}
}
请注意,此解决方案本身的可扩展性不是很好。如果您需要创建更深层次的子文件夹,或者根据名称将不同的子文件夹放在某些文件夹中,那么调整此脚本以满足您的需求并不是一件容易的事。但是,它应该可以满足您在问题中概述的目的。