在父目录中创建新文件夹,而不是在脚本所在的目录中

在父目录中创建新文件夹,而不是在脚本所在的目录中

我一直很成功地使用它,直到有人弄乱了这个文件。

因此我需要隐藏文件或将其移动到隐藏文件夹。我遇到的问题是它会在其所在的目录中创建新文件夹。

我希望它在父目录中创建新文件夹。

 ###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

}

答案1

您可以使用相对路径。

因此,如果您的路径是"..\MyPath"并且您创建了该路径,它将被创建为高一级,然后作为该文件夹的子路径。

类似地,如果您指定:"..\..\..\Folder\Another"它将上升 3 个级别,然后进入文件夹 Folder(但该文件夹必须存在),然后创建另一个。

同样,您可以使用"\Folder\MyFolder"在根目录中创建文件夹,然后创建子文件夹 Folder,然后创建 MyFolder,它将使用当前驱动器。这样,您的脚本就可以在拇指驱动器上工作,而无需知道它具有哪个驱动器号。

考虑到这一点,您可以简单地使用以下代码:

$yearfolder = "..\$year-$nextyear"

或者如果你想要安全的话:

$yearfolder = "..\$($year)-$($nextyear)"

使用 $(...) 基本上允许您将任何命令或变量放入字符串中。

例如这是行不通的:

$user = Get-ADUser -filter * | select -first 1

Write-host "We found $user.FullName"

但这会起作用:

$user = Get-ADUser -filter * | select -first 1

Write-host "We found $($user.FullName)"

相关内容