Copy-Item в PowerShell; Формат данного пути не поддерживается - PullRequest
3 голосов
/ 14 июня 2011

Я относительно новичок в PowerShell, и я пытался копировать файлы, используя текстовый файл, отформатированный так:

file1.pdf
dir1\dir2\dir3\dir 4

file2.pdf
dir1\dir5\dir7\di r8

file3.pdf
...etc.

Где первая строка каждой записи - это имя файла, а втораяпуть к файлу из C: \ Users.Например, полный путь к первой записи в файле будет таким:

C:\Users\dir1\dir2\dir3\dir 4\file1.pdf

Ниже приведен код, который у меня есть, но я получаю сообщение об ошибке: «Формат данного пути не поддерживается.'и еще одна ошибка после этого говорит мне, что он не может найти путь, который я предполагаю в результате первой ошибки.Я немного поиграл с этим, и у меня сложилось впечатление, что это связано с передачей строки в Copy-Item.

    $file = Get-Content C:\Users\AJ\Desktop\gdocs.txt
    for ($i = 0; $i -le $file.length - 1; $i+=3)
    {
        $copyCommand = "C:\Users\" + $file[$i+1] + "\" + $file[$i] 
        $copyCommand = $copyCommand +  " C:\Users\AJ\Desktop\gdocs\"
        $copyCommand
        Copy-Item $copyCommand

    }

Ответы [ 2 ]

5 голосов
/ 14 июня 2011

Вы можете прочитать файл кусками из трех строк, соединить первые два элемента, чтобы сформировать путь, и использовать copy-item для копирования файлов.

$to = "C:\Users\AJ\Desktop\gdocs\"

Get-Content C:\Users\AJ\Desktop\gdocs.txt -ReadCount 3 | foreach-object{
    $from = "C:\Users\" + (join-path $_[1] $_[0] )
    Copy-Item -Path $from -Destination $to
}
1 голос
/ 14 июня 2011

Попробуйте это (внутри цикла):

$from = "C:\Users\" + $file[$i+1] + "\" + $file[$i] 
$to = "C:\Users\AJ\Desktop\gdocs\"
Copy-Item $from $to

$from и $to - аргументы для Copy-Item командлета.Они связаны с параметрами -Path и -Desinattion .Вы можете проверить это с помощью этого кода:

Trace-Command -pshost -name parameterbinding { 
   Copy-Item $from $to
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...