5

У меня есть проект, анализирующий лог-файлы. Кто-то, в своей бесконечной мудрости, называет лог-файлы MM-DD-YYYY-HH-MM.LOG (например, 10-31-2012-18-00.Журнал на 6:00 вечера 31 октября 2012 года).

Мой первый заказ - создать что-то более разумное для работы, создав копии существующих журналов с именем YYYYMMDD_HHMM.LOG (например, 20121031_1800.LOG для приведенного выше примера) и должен использовать powershell для выполнения этой задачи.

Так вот, где я так далеко:

$orgPath = "d:\testOrg\"
$newPath = "d:\testNew\"
$delim   = "-" ;

function copyFile {
"$($orgPath) copying Files to $($newPath)" 
Get-ChildItem $orgPath | `
foreach { 
  $nameArray = $_.Split($delim)
  $newName = Write-Output $nameArray[2]+$nameArray[0]+$nameArray[1]+"_"+$nameArray[3]+$nameArray[4] 
  $targetFile = $newPath + $_.FullName.SubString($orgPath.Length) 
  New-Item -ItemType File -Path $targetFile -Force  
  Copy-Item $_.FullName -destination $targetFile
  write-host $_.DirectoryName $_.newName  
  "File Copied"
}

и я продолжаю получать ошибку

+ CategoryInfo          : InvalidOperation: (Split:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound

Я знаю, что мне здесь не хватает чего-то довольно глупого ...Я просто не вижу этого. Какие-нибудь другие виды глаз, которые могут мне помочь?

1 ответ1

3

Get-ChildItem возвращает список объектов файловой системы, а не только имена файлов.

Вы можете использовать опцию -Name чтобы она возвращала только имена файлов.

Тип вывода - это тип объектов, которые испускает командлет.

система.Object - Тип объекта, который возвращает Get-ChildItem, определяется объектами в пути диска провайдера.

система.String - Если вы используете параметр Name , Get-ChildItem возвращает имена объектов в виде строк.

Что-то вроде этого:

$orgPath = "d:\testOrg\"
$delim = "-"

Get-ChildItem $orgPath -Name | `
foreach { 
  $nameArray = $_.Split($delim)
  $newName = $nameArray[2]+$nameArray[0]+$nameArray[1]+"_"+$nameArray[3]+$nameArray[4] 
  Write-Output $newName
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .