这让我开始香蕉。我假设我错过了一些愚蠢的东西,但我尝试了大约10种不同的格式,没有任何作用。
这是我正在运行的代码:
$today=$(Get-Date -Format o)
$destfile = "C:\SEA-FTP\toFTP\SEAInfo-$today.csv"
$srcfile = "C:\SEA-FTP\temp\QueryCSVTempMstr.csv"
Copy-Item $srcfile -Destination $destfile
这是错误消息:
Copy-Item : The given path's format is not supported.
At C:\SEA-FTP\BCP_SQL_Script-v1.0.ps1:53 char:10
+ Copy-Item <<<< $srcfile -Destination $destfile
+ CategoryInfo : NotSpecified: (:) [Copy-Item], NotSupportedException
+ FullyQualifiedErrorId : System.NotSupportedException,Microsoft.PowerShell.Commands.CopyItemCommand
我知道Google搜索中有一百万个问题,但看起来我正在做他们正在做的事情。有关格式的任何想法吗?
答案 0 :(得分:4)
您无法在Windows上的文件名中放置冒号:
您的日期格式为 2016-08-22T22:15:25.3693163+01:00
,因此无法作为文件名的一部分。
修复:没有修复方法可以保持名称的指定方式;你可以-replace ':', '-'
,任何对你有意义的角色。
答案 1 :(得分:0)
Windows不允许在文件名中使用冒号(:)。
Get-Date -Format o
给你输出:“2016-08-23T07:54:19.4530323 + 02:00”这包括冒号。
如果要保持名称不变,可以用短划线替换冒号“:”。在您的示例中:
$Today = Get-Date -Format o
$SrcFileName = "C:\temp\SEAInfo-$($Today.Replace(":","-")).csv"
但如果是我的文件,我会更改时间戳格式。 文件名“SEAInfo-2016-08-23T08-33-36.3268865 + 02-00.csv”让我很难理解这个文件的创建时间。
根据您的时间戳需要详细程度,您可以使用:
$Today = Get-Date -Format "yyyyMMdd-HHMMss.ff"
$SrcFileName = "C:\temp\SEAInfo$Today.csv"
或者只是日期就足够了?
$Today = Get-Date -Format "yyyy-MM-dd"
$SrcFileName = "C:\temp\SEAInfo-$Today.csv"
我的眼睛会喜欢这样的文件名:“SEAInfo2016-08-23.csv”
您应该尝试看看您觉得容易阅读的内容。 在这里,您可以找到许多格式化日期和时间的方法示例: https://technet.microsoft.com/en-us/library/ee692801.aspx