Вопрос:

Сбой копирования элемента данных Формат заданных путей не поддерживается

powershell copy-item

6116 просмотра

2 ответа

126 Репутация автора

Это сводит меня с ума. Я предполагаю, что мне не хватает чего-то глупого, но я пробовал около 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 есть миллион вопросов, но похоже, что я делаю то, что они делают. Есть мысли по поводу формата?

Автор: Webtron Источник Размещён: 22.08.2016 09:03

Ответы (2)


6 плюса

18987 Репутация автора

Решение

Вы не можете поместить двоеточие в имя файла в Windows:

Изображение сообщения об ошибке всплывающей подсказки Windows Explorer при попытке переименовать файл и ввести двоеточие в имя

Ваш формат даты 2016-08-22T22:15:25.3693163+01:00так, что он не может работать как часть имени файла.

Исправление: нет исправления, которое сохраняет имя как указано; Вы могли бы -replace ':', '-', любой персонаж, который имеет смысл для вас.

Автор: TessellatingHeckler Размещён: 22.08.2016 09:37

0 плюса

118 Репутация автора

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

Автор: Andreas Размещён: 23.08.2016 06:31
Вопросы из категории :
32x32