2014-01-07 18 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 еще. Это как сделать это с помощью скриптов?

EDIT Это то, что я завелся, начиная с:

# 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

Все, хотя явно не указано, не требуется. –

+0

Вы правы, это не нужно. Это необходимо, если вы хотите создать файл в каталоге, который еще не существует, и я ошибочно предположил, что он необходим для каталогов. – KevinD

Смежные вопросы