Test-Path - недопустимые символы в пути при использовании переменной - PullRequest
2 голосов
/ 03 июля 2019

Я довольно новичок в PowerShell и заранее прошу прощения, если это глупый вопрос.

Я пытаюсь создать новое место назначения / имя файла, где я беру старое имя файла и увеличиваю его префикс с +1

$destination = Split-Path -Path 'C:\Users\tom\Desktop\test\0_InstalledPrograms.log'
$file =  split-path "C:\Users\tom\Desktop\test\0_InstalledPrograms.log" -Leaf

$array = $file -split '_'
$prefix = $array[0] + 1
$suffix = $array[1]
$newFile = $prefix + '_' + $suffix
$newFile = Out-String -InputObject $newFile
$destination = $destination + '\' + $newFile

Test-Path $destination

Test-Path : Illegal characters in path.
At C:\Users\tom\Desktop\incrementFileName.ps1:18 char:1
+ Test-Path $destination
+ ~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (C:\Users\lgranc...dPrograms.log
:String) [Test-Path], ArgumentException
    + FullyQualifiedErrorId : ItemExistsArgumentError,Microsoft.PowerShell.Commands.TestPathCommand

False

Ответы [ 2 ]

2 голосов
/ 03 июля 2019

Это утверждение:

$newFile = Out-String -InputObject $newFile

добавляет новую строку (CR + LF) к строке и совершенно не нужно ($newFile уже является строкой).

Удалите этолиния и все заработает :)

0 голосов
/ 03 июля 2019

Вы можете сделать это легко следующим образом:

$file = "C:\Users\tom\Desktop\test\0_InstalledPrograms.log"
$splittedName = (Split-Path $file -leaf).split('_')
$newFileName = [string]([int]$splittedName[0] + 1) +'_'+ $splittedName[1]

Move-Item -Path $file -Destination (Join-Path (Split-path $file) -ChildPath $newFileName)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...