2014-01-07 58 views
4

我創建了一個PowerShell腳本來「編譯」遍佈我的筆記的一堆文檔。我想先創建目錄結構,然後將文件複製到新創建的目錄中。我知道如何手動執行此操作,但我不確定如何在PowerShell中處理它。我一般對新手腳本不太熟悉,但我確實懂得用幾種不同的語言進行編程。創建一個子目錄/子文件夾

我應該改變當前的目錄,然後再做更多的目錄嗎?還是有不同的方法?

這是我到目前爲止有:

#Variables 
$containerFolder = "F:\FSG\Packet.Fusion for IT and AV Professionals" 
$rootFolder = "Fusion for IT and AV pros $(Get-Date -format 「MM-dd-yyyy」)" 


#create the directory structure 
md -Path $containerFolder -Name $rootFolder 

我想$ rootFolder內作出幾個目錄,以及1或2其中都會有自己的子目錄。如果我是在命令行執行此操作,我會轉到新目錄,然後再運行md。那是怎麼用腳本來做的?

編輯這是我清盤開始:

# Compiles the Fusion packet for distribution 

############################### 
###########Variables########### 
############################### 

#folder structure 
$FSG = "F:\FSG" 
$containerFolder = "Packet.Fusion for IT and AV Professionals" 
$rootFolder  = "Fusion for IT and AV pros $(Get-Date -format 「MM-dd-yyyy」)" 
$subRoot1  = "Fusion Server" 
$subRoot2  = "Scheduling Enhancement and Panels" 
$subRoot2sub1 = "Scheduling Panels" 
$subRoot3  = "SQL Server" 

#source folders 
$HW  = "0.Hardware" 
$3SMDoc = "0.Hardware\TPMC-3SM.Documentation" 
$4SMDoc = "0.Hardware\TPMC-4SM.Documentation" 
$4SMDDoc = "0.Hardware\TPMC-4SM-FD.Documentation" 
$730Doc = "0.Hardware\TSW-730.Documentation" 
$730OLH = "0.Hardware\TSW-730.OLH" 
$CENRVS = "0.Hardware\CEN-RVS.Notes" 

$ProjMgmt = "0.Project Management" 

$SW   = "0.Software" 
$RVLicensing = "0.Software\0.RoomView.License" 
$RVNotes  = "0.Software\0.RoomView.Notes" 
$SQLLicensing = "0.Software\database.SQL.Licensing" 
$SQLNotes  = "0.Software\database.SQL.Notes" 
$FRVMarketing = "0.Software\Fusion RV.Marketing" 
$FRVNetworking = "0.Software\Fusion RV.Networking" 
$FRVNotes  = "0.Software\Fusion RV.Notes" 


############################### 
#create the directory structure 
############################### 

md -Path $containerFolder -Name $rootFolder 

cd $FSG\$containerFolder\$rootFolder 
md "eControl and xPanels" 
md "Fusion Server" #$subRoot1 
md "Getting Started as a User" 
md "Project Management" 
md "RoomView Connected Displays" 
md "Scheduling Enhancement and Panels" #$subRoot2 
md "SQL Server" #$subRoot3 

cd $FSG\$containerFolder\$rootFolder\$subRoot1 
md "CEN-RVS" 
md "Licenseing Information" 
md "Networking" 
md "Official Documentation" 
md "Prerequisites, including powerShell script" 
md "Product Info" 
md "Requirements" 
md "Tech Info" 
md "Windows Authentication to Fusion RV" 

cd $FSG\$containerFolder\$rootFolder\$subRoot2 
md "Outlook Add-in" 
md "Scheduling Panels" #$subRoot2sub1 

cd $FSG\$containerFolder\$rootFolder\$subRoot2\$subRoot2sub1 
md "TPMC-3SM" 
md "TPMC-4SM" 
md "TPMC-4SM-FD" 
md "TSW-730" 

cd $FSG\$containerFolder\$rootFolder\$subRoot3 
md "Multi-database model only" 
md "SQL Licensing" 

是否有打造leafiest最子目錄任何好處,暗示使PowerShell中創建中間的呢?

這樣做有什麼缺點嗎?

+0

的缺點是,這個腳本是可笑的長期,複雜和難以維護。 =)請改變你接受的答案。 – jpmc26

回答

1

這是我結束了結尾:

# Compiles the Fusion packet for distribution 

############################### 
###########Variables########### 
############################### 

#folder structure 
$FSG = "F:\FSG" 
$containerFolder = "Packet.Fusion for IT and AV Professionals" 
$rootFolder  = "Fusion for IT and AV pros $(Get-Date -format 「MM-dd-yyyy」)" 
$subRoot1  = "Fusion Server" 
$subRoot2  = "Scheduling Enhancement and Panels" 
$subRoot2sub1 = "Scheduling Panels" 
$subRoot3  = "SQL Server" 

#source folders 
$HW  = "0.Hardware" 
$3SMDoc = "0.Hardware\TPMC-3SM.Documentation" 
$4SMDoc = "0.Hardware\TPMC-4SM.Documentation" 
$4SMDDoc = "0.Hardware\TPMC-4SM-FD.Documentation" 
$730Doc = "0.Hardware\TSW-730.Documentation" 
$730OLH = "0.Hardware\TSW-730.OLH" 
$CENRVS = "0.Hardware\CEN-RVS.Notes" 

$ProjMgmt = "0.Project Management" 

$SW   = "0.Software" 
$RVLicensing = "0.Software\0.RoomView.License" 
$RVNotes  = "0.Software\0.RoomView.Notes" 
$SQLLicensing = "0.Software\database.SQL.Licensing" 
$SQLNotes  = "0.Software\database.SQL.Notes" 
$FRVMarketing = "0.Software\Fusion RV.Marketing" 
$FRVNetworking = "0.Software\Fusion RV.Networking" 
$FRVNotes  = "0.Software\Fusion RV.Notes" 


############################### 
#create the directory structure 
############################### 

md -Path $containerFolder -Name $rootFolder 

cd $FSG\$containerFolder\$rootFolder 
md "eControl and xPanels" 
md "Fusion Server" #$subRoot1 
md "Getting Started as a User" 
md "Project Management" 
md "RoomView Connected Displays" 
md "Scheduling Enhancement and Panels" #$subRoot2 
md "SQL Server" #$subRoot3 

cd $FSG\$containerFolder\$rootFolder\$subRoot1 
md "CEN-RVS" 
md "Licenseing Information" 
md "Networking" 
md "Official Documentation" 
md "Prerequisites, including powerShell script" 
md "Product Info" 
md "Requirements" 
md "Tech Info" 
md "Windows Authentication to Fusion RV" 

cd $FSG\$containerFolder\$rootFolder\$subRoot2 
md "Outlook Add-in" 
md "Scheduling Panels" #$subRoot2sub1 

cd $FSG\$containerFolder\$rootFolder\$subRoot2\$subRoot2sub1 
md "TPMC-3SM" 
md "TPMC-4SM" 
md "TPMC-4SM-FD" 
md "TSW-730" 

cd $FSG\$containerFolder\$rootFolder\$subRoot3 
md "Multi-database model only" 
md "SQL Licensing" 
19
New-Item -ItemType Directory -Path C:\NewPath\NewSubPath\AnotherSubDir\WowThisIsReallyNested -Force 

這將創建完整的路徑,包括所有的子目錄。

+1

將其應用於OP的腳本,即: 'New-Item -ItemType Directory -Path「$ containerFolder \ $ rootFolder \ subdirname」'。更短的版本:'New-Item「$ containerFolder \ $ rootFolder \ subdirname」-Type Directory「(** - Path **是第一個位置參數,因此如果參數名稱位於第一個位置,則可以省略參數名稱; ** -Type **是** - ItemType **的別名。) –

+1

雖然沒有明確說明--Force似乎不是必需的。 –

+0

你是對的,這不是必需的。如果要在尚不存在的目錄中創建文件,並且我錯誤地認爲它也是目錄所需的文件,則這是必需的。 – KevinD

相關問題