06/12/2010 13.21
Ciao,
probabilmente vuoi ricreare l'intera struttura delle cartelle da un percorso ad un altro. A questo punto dovresti usare lo switch -Recurse di Get-ChildItem e
recuperare il path relativo:
$sourcePath = 'c:\temp'
Get-ChildItem $sourcePath -Recurse |
Where-Object { $_.PSIsContainer } |
ForEach-Object {
$relativePath = $_.FullName.SubString($sourcePath.Length + 1)
New-Item -Name $relativePath -Type directory -WhatIf
}
Il cmdlet Copy-Item supporta questo tipo di attività ricorsiva automaticamente ma, anzichè limitarsi a creare le nuove cartelle, effettua anche la copia di tutti i file.
Ciao, a presto!
Efran Cobisi
Solution developer, consultant and trainer
Microsoft MVP, MCT, MCSD for Microsoft .NET, MCTS: SQL Server 2005
06/12/2010 14.01
ciao,
in realtà devo fare una cosa mooolto piu semplice.
all'interno di ogni cartella che si trova sotto c:\tmp devo creare una sottocartella chiamata gestoff
06/12/2010 14.08
Sì, effettivamente è un po' più semplice allora. :)
Get-ChildItem C:\Temp -Recurse |
Where-Object { $_.PSIsContainer } |
ForEach-Object {
New-Item -Name gestoff -Type directory -Path ($_.FullName) -WhatIf
}
Ciao!
Efran Cobisi
Solution developer, consultant and trainer
Microsoft MVP, MCT, MCSD for Microsoft .NET, MCTS: SQL Server 2005
06/12/2010 14.18
ottimo grazie!
ultima cosa: come mai hai messo le parentesi qui ??
($_.fullname)
a cosa servono??
grazie!
06/12/2010 18.39
Ah, in questo caso le parentesi sono superflue. Io le metto per una questione 1) di leggibilità e 2) di coerenza con il caso in cui il parametro fosse una riga di comando (in quel caso sarebbero obbligatorie).
Ciao, a presto!
Efran Cobisi
Solution developer, consultant and trainer
Microsoft MVP, MCT, MCSD for Microsoft .NET, MCTS: SQL Server 2005