[英]Powershell: How can I create text files within folders recursively?
我是Powershell的新手,我已经寻找了一种在新创建的文件夹中递归创建文本文件的方法,但是到目前为止,我所拥有的代码不是在适当的文件夹中创建文本文件,而是在顶层目录中创建文本文件。
我在文件中有一个名称列表。 对于列表中的每个名称,我需要一个具有该人姓名的文件夹,以及一个在其相应文件夹中具有其名称的文本文件。 到目前为止,我的代码是:
FOREACH ($User in $UserList)
{
$NewFolder = ("C:\Users\me\Documents\" + User.UserName + "Folder");
New-Item $NewFolder -type directory;
$NewFile = ($NewFolder + User.UserName + "File");
New-Item $NewFile -type file;
}
任何帮助是极大的赞赏。
那应该做。 只需对原始脚本进行少量更改。
就像我在评论中问的那样, UserName
听起来像csv输入文件中使用的标头。 这就是为什么需要使用$user.UserName
原因。
如果只是文本文件, $user.Username
更改$user.Username
$user
foreach ($User in $UserList)
{
$NewFolder = "C:\Users\me\Documents\" + $User.UserName + "Folder"
New-Item $NewFolder -type directory
$NewFile = "$NewFolder\" + $User.UserName + "File.txt"
New-Item $NewFile -type file
}
$userlist = @{UserName='auser'},@{UserName='anotheruser'}
$baseDirectory = "C:\temp\46501232"
foreach ($user in $userlist.UserName)
{
New-Item -ItemType Directory -Path $baseDirectory -Name "$user"
New-Item -ItemType File -Path "$baseDirectory\$user" -Name "File"
}
PS C:\temp\46501232> ls C:\temp\46501232;ls "C:\temp\46501232\auser"
Directory: C:\temp\46501232
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 30.09.2017 13.39 anotheruser
d----- 30.09.2017 13.39 auser
Directory: C:\temp\46501232\auser
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 30.09.2017 13.39 0 File
试试这个方法:
$userlist = @{UserName='UserName1'},@{UserName='UserName2'}
$Dir= "C:\temp\"
foreach ($User in $UserList.UserName)
{
$PathFile =[System.IO.Path]::Combine($Dir, $User + "Folder" , $User + "File.txt")
New-Item $PathFile -type file -Force
}
如您所见,如果使用-force而不是必要的来创建文件夹,则会自动创建它们。 我使用Combine方法,因为如果您的目录路径以\\结尾,则不会创建路径。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.