只是一个小问题,我可能会错过一些非常简单的事情 我已经设置了一个脚本,只是为了让一些文件夹成为更大脚本的一部分 我试图设置它,以便在运行脚本时创建一个新目录,其日期为:
$Date = ((Get-Date).ToShortDateString())
$CompileFolder = "C:\Registry_Export\PostInfection\$Date\Compiled Postinfection"
New-Item -path $CompileFolder -ItemType Directory
脚本按预期工作(上面的部分只是脚本中的一部分)
但是,当生成目录时,它们创建子目录而不是仅创建一个目录。
例如23/03/2017应该创建一个名为23/03/2017的文件夹
然而,它正在建立一个文件夹结构:
C:\ Registry_Export \ PostInfection \ 23 \ 03 \ 2017 \编译后的感染
我明白这是因为日期因为日期而生成,但是想知道是否有一种简单的方法来纠正这个
谢谢
答案 0 :(得分:2)
/
是NTFS中的非法文件名字符(并且,通过扩展,也是非法目录名称字符)。
我建议您为日期字符串使用不同的分隔符,例如-
或.
,或者只是完全省略分隔符。要使用自定义格式,您可以使用ToString()
,-f
string format operator或Get-Date -Format
# using hyphens (23-07-2017)
$Date = '{0:dd-MM-yyyy}' -f (Get-Date)
# using dots (23.07.2017)
$Date = (Get-Date).ToString('dd.MM.yyyy')
# using no separator (23072017)
$Date = Get-Date -Format ddMMyyyy
答案 1 :(得分:1)
补充Mathias R. Jessen's helpful answer:
另一种方式:任何\
或 /
字符。在传递给New-Item -ItemType Directory
的名称中被解释为路径分隔符分隔多个目录名称。
通常,请考虑使用 culture-invariant , sortable 字符串格式,例如s
standard format string提供的格式,该格式基于ISO 8601标准:
> (Get-Date -Format s) -replace 'T.*'
2017-03-23
-replace 'T.*'
部分只是缩短了时间部分。