这里是老师,完全是 powershell 新手,想节省一点时间来创建学生文件夹以便提交作业。
我有以下为文本文件中的每一行(学生姓名)创建一个新文件夹。
$folder="X:\9-3_Science";
$txtFile="X:\9-3_Science\9-3_StudentNames.txt";
get-content $txtFile | %{
if($_)
{
mkdir "$folder\$_";
}
}
输出文件夹如 \FirstLast
但是,我想输出带有连接字符串的文件夹名称来识别学生所在的教室,例如 \9-4_FirstLast_Science
我如何修改“mkdir”命令来执行此操作?
答案1
我做出如下假设:
- 你想将学生文件夹放在教室文件夹内
- 学生们都在单独的行中
.txt
如果确实如此,我们可以执行以下操作:
- 取下叶子
$folder
并将其分开_
以获得RoomNumber
和Subject
以供进一步使用 $folder
通过组合,Room ($split[0])
,StudentName ($_)
,创建字符串subject ($split[1])
- 使用该字符串创建一个文件夹。
其结果为以下代码:
$folder = "X:\9-3_Science"
$txtFile = "X:\9-3_Science\9-3_StudentNames.txt"
$Number = "9-3_"
$Subject = "_Science"
Get-Content $txtFile | ? { $_ -ne '' } | % {
$FolderString = "{0}{1}{2}" -f $Number, $_, $Subject
$FolderName = Join-Path $folder $FolderString
mkdir $FolderName
}
我根据您的代码做了以下更改:
- PowerShell 不需要
;
每行后面都有结尾,所以我删除了它们。 - 而不是
if ($_)
我在循环之前过滤空行? { $_ -ne '' }