簡體   English   中英

Powershell:如何在文件夾中遞歸創建文本文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM