Eu tenho usado isso com bastante sucesso até que alguém mexeu com o arquivo.
Portanto, preciso ocultar o arquivo ou movê-lo para uma pasta oculta. O problema que tenho é que ele cria as novas pastas no diretório em que reside.
Eu gostaria que ele criasse as novas pastas no diretório pai.
###Get the year entered by the user
$year = Read-Host "Please enter year"
$nextyear = [int]$year + 1
$yearfolder = "$year-$nextyear"
###Set the starting date
$startdate = [DateTime] "01 April $($year)"
$count = 1
###Set the file's path by combining the folder path and the filename
$filename = join-Path -Path (Get-location) -ChildPath "a.txt"
###Create folder based on the year entered by the user
New-Item -ItemType Directory -Name "$($yearfolder)"
###Change directory to the newly created folder
cd "$($yearfolder)"
While ( $count -lt 13)
{
###Create folders
$newfolder = "$($count.ToString('00')) - $($startdate.ToString('MMMM yyyy'))"
New-Item -ItemType Directory -Name "$newfolder"
#Copy file to new folder
Copy-Item -Path $filename -Destination $newfolder
#Add one month
$startdate = $startdate.AddMonths(1)
#Increment the counter
$count = $count + 1
}
Você pode usar caminhos relativos.
Portanto, se o seu caminho for
"..\MyPath"
e você o criar, ele será criado um nível acima e, em seguida, como um subcaminho dessa pasta.Da mesma forma, se você especificar:
"..\..\..\Folder\Another"
ele irá 3 níveis acima, então vá para a pasta Pasta (essa deve existir) e crie Outra.Da mesma forma, você pode usar
"\Folder\MyFolder"
para criar sua pasta na raiz, subpasta Pasta, criar sua MyFolder e ela usará a unidade atual. Dessa forma, seu script pode funcionar em um pen drive sem que ele saiba qual letra de unidade possui.Então, com isso em mente, você pode simplesmente usar o seguinte código:
Ou se você quiser estar no lado seguro:
Usar $(...) basicamente permite que você coloque qualquer comando ou variável dentro de uma string.
Por exemplo, isso não funcionará:
Mas isso vai funcionar: