不支持复制项目失败给定路径格式

Copy-Item Failing Given Paths format is not supported

这让我发疯。我假设我遗漏了一些愚蠢的东西,但我已经尝试了大约 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 搜索中有一百万个问题,但看起来我正在做他们正在做的事情。对格式有什么想法吗?

您不能在 Windows 上的文件名中添加冒号:

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

修复:没有修复指定的名称;你可以 -replace ':', '-',任何对你有意义的字符。

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