1

这让我很生气。我假设我错过了一些愚蠢的东西,但我尝试了大约 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

我知道在谷歌搜索中有一百万个问题,但看起来我正在做他们正在做的事情。对格式有什么想法吗?

4

2 回答 2

7

您不能在 Windows 上的文件名中放置冒号:

尝试重命名文件并在名称中键入冒号时 Windows 资源管理器的工具提示错误消息的图片

您的日期格式2016-08-22T22:15:25.3693163+01:00不能作为文件名的一部分。

修复:没有修复可以保持指定名称的方式;你可以-replace ':', '-',任何对你有意义的角色。

于 2016-08-22T21:37:40.480 回答
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

于 2016-08-23T06:31:06.790 回答