不支持Copy-Item Failing Given Paths格式

时间:2016-08-22 21:03:44

标签: powershell copy-item

这让我开始香蕉。我假设我错过了一些愚蠢的东西,但我尝试了大约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搜索中有一百万个问题,但看起来我正在做他们正在做的事情。有关格式的任何想法吗?

2 个答案:

答案 0 :(得分:4)

您无法在Windows上的文件名中放置冒号:

Picture of Windows Explorer's tooltip error message when trying to rename a file and type a colon into the name

您的日期格式为 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