在PowerShell中以当前日期为名称创建文件夹

17

我正在编写一个PowerShell脚本。我想知道如何创建以当前日期为名称的文件夹。文件夹的名称应为“yyyy-MM-dd”(根据.NET自定义格式字符串)。

我知道要创建文件夹,我需要使用以下命令:

New-Item -ItemType directory -Path "some path"

一个可能的解决方案是(如果我想要在脚本所在的同一目录下创建文件夹):

$date = Get-Date
$date = $date.ToString("yyyy-MM-dd")
New-Item -ItemType directory -Path ".\$date"

有没有一种方法可以将命令链接起来,这样我就不需要创建变量了?

5个回答

38
可以。
New-Item -ItemType Directory -Path ".\$((Get-Date).ToShortDateString())"

或者如alroc所建议的那样,为了达到在任何文化下获得相同的格式。

New-Item -ItemType Directory -Path ".\$((Get-Date).ToString('yyyy-MM-dd'))"

1
谢谢,这正是我在寻找的。你的解决方案唯一的问题是短日期,因为它取决于用户的语言。请将其修复为ToString("yyyy-MM-dd"),这样我就可以接受你的答案了。 - Santhos
你不能动吗? ;) alroc发布了一个可能适合你的答案。对我来说,我得到了你想要的东西,而且没有再考虑过。 - notjustme
我不确定 "" 和 '' 的使用,我想将您的问题标记为正确。 - Santhos
我发现你也可以直接从get-date获取字符串,像这样:Get-Date -Format "yyyy-MM-dd" - Santhos

14

不要使用 ToShortDateString(),就像@notjustme所写的那样;它的格式取决于区域设置和您在“区域和语言”控制面板中的日期格式设置。例如,在我的电脑上,它将产生以下目录名称:

C:\Users\me\09\18\2014

要明确设置日期字符串的格式。

New-Item -ItemType Directory -Path ".\$((Get-Date).ToString('yyyy-MM-dd'))"

我刚刚在@notjustme的回答下进行了评论。 - Santhos

4
$folderName = (Get-Date).tostring("dd-MM-yyyy-hh-mm-ss") 
New-Item -ItemType Directory -Path "E:\parent" -Name $FolderName

正在在 E:\parent 下创建名称为 11-06-2020-07-29-41 的文件夹。


1
更简短的方法是: $date = get-date -Format yyyy-MM-dd

1
需要使用 -Format yyyy-MM-dd。mm 表示分钟,而不是月份。 - TimDawe

0
$datecurrent = get-date -Format dd-MM-yy

New-Item -ItemType directory -Path ".\$datecurrent"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接