如何在Powershell中创建一个以当前日期为名称的文件夹?

4
我有大约50个XML文件,每次运行特定逻辑时都会生成新的文件。现在,我想将这50个文件存储在特定的日期时间文件夹中。无论我针对一个特定日期运行多少次该逻辑,XML文件都应该仅覆盖该特定日期(基于hhmmss)。简单来说,如何创建一个以当前日期命名的文件夹,并根据日期将XML文件存储在其中?
例如:有3个XML文件file_1.xml,file_2.xml和file_3.xml。现在我希望按以下格式创建文件夹:
**xml_yyyymmdd_hhmmss** 

这个项目需要一个文件夹来储存所有的XML文件。

For Eg: Xml_20121029_180912 

今天的日期将被用作文件夹名称,该文件夹将用于存储所有3个XML文件。
明天的文件夹名称将是:
Xml_20121030_170912 

我的代码如下:

$location = New-Item -Path . -ItemType Directory -Name ("XML_$(Get-Date -f dd_MM_yyyy_hhmmss)")
$rptdir = "C:\Test" 
$ rptdir = ($rptdir + '\' + $location.Name)
$outputFile= "$rptdir\File_2.xml"
$row = "\\shared\Data\DevSB\CS\appSomeSystem.dll"   
& /f:$row /o:$outputFile
输出错误:无法找到路径“C:\test\XML_29_10_2012_091717\File2.xml” 的一部分。
问题在于- XML_29_10_2012_091717文件夹与其中的File2.xml被创建了,但不是在C:\Test中,而是在脚本所在的地方。
我需要在C:\test中创建XML_29_10_2012_091717文件夹,并将File2.xml放置其中。
环境:Win Xp Professional。
非常感谢任何帮助。
谢谢。
3个回答

4

试试这个:

New-Item -Path . -ItemType Directory -Name ("XML_$(Get-Date -f ddMMyyyy_hhmmss)")

在评论后编辑:

尝试更改以下内容:

$location = New-Item -Path c:\test -ItemType Directory -Name ("XML_$(Get-Date -f dd_MM_yyyy_hhmmss)")
$outputFile= "$($location.fullname)\File_2.xml"

这有点可行,但是我有 $rptDir = "C:\Test"。当我将上述内容分配给一个变量,比如说 $xmlLoc = New-Item -Path . -ItemType Directory -Name ("XML_$(Get-Date -f ddMMyyyy_hhmmss)"),并将 $xmlLoc 追加到 "C:\Test$xmlLoc" 时,它会显示给定路径格式不受支持。我该如何追加它? - ashish g
我尝试了以下代码:$rptDir = "C:\Test" + '' + Location.Name,我设置的用于输出xml文件的变量是$outputFile = $rptDir\File1.xml",但仍然出现相同的错误。此外,在这种情况下,xml日期时间文件夹被创建(其中不包含文件File1.xml),并且位于脚本实际存在的文件夹中,而不是$rptDir中。 - ashish g
我有大约50个XML文件需要存储在当前日期的datetime文件夹中。如果我尝试循环处理这50个文件,每分钟都会创建一个新文件夹,这是不可避免的。但是,如果从文件夹中删除时间部分(hhmmsss部分),则会创建当前日期文件夹,但在第一次之后,每次循环输入XML文件时,都会出现错误- XML文件夹已存在,并且无法将XML文件写入其中。 - ashish g
这里还有一件事...如果我需要读取日期文件夹内创建的这些Xml文件并将它们转换为csv格式,该怎么办?我有一个逻辑,它会读取xml中的特定属性并将其打印成csv。有什么线索吗?再次感谢。 :) - ashish g
这里有一个奇怪的问题.. 今天我再次运行代码,它成功地创建了一个日期文件夹(Xml_2012_10_31),其中包含所有的xml文件,但是它从$rptdir路径中删除了昨天的文件夹(Xml_2012_10_30)。我该如何确保之前的文件夹保持完好无损? - ashish g
显示剩余3条评论

2

完整版本如下:

New-Item -Path . -ItemType Directory -Name (Get-Date -f dd_MM_yyyy)

您还可以使用md或mkdir命令。
md (Get-Date -f dd_MM_yyyy)

0
$location = New-Item -Path $rptdir -ItemType Directory **-force** -Name ("XML_$(Get-Date -f dd_MM_yyyy_hhmmss)")

在这里添加一个-force cmd-let 怎么样?


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