Попытка скопировать группу файлов, содержащихся в текстовом файле - PullRequest
3 голосов
/ 04 октября 2011

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

Вот немного текстового файла. В реальном файле нет лишних строк, но я должен был сделать это:

"D:\Shared\Customer Care\Customer Care Common\Customers Contracted\Customers Contracted\Fred 44705"
"D:\Shared\Customer Care\Customer Care Common\Customers Contracted\Customers Contracted\Johnson 47227"
"D:\Shared\Customer Care\Customer Care Common\Customers Contracted\Customers Contracted\Daniel 35434"
"D:\Shared\Customer Care\Customer Care Common\Customers Contracted\Customers Contracted\Frank, John 48273"

Я также пытался заключить строку имени файла в двойные кавычки.

Вот простой скрипт, который я пытаюсь использовать:

Get-Content c:\users\scripts\files-to-fix.txt | Foreach-Object {copy-item $_ d:\junk}

Ошибка, которую я получаю:

Copy-Item: не удается найти диск. Диск с именем '' D 'не существовать. В C: \ users \ mhyman \ scripts \ copyfiles.ps1: 2 char: 81 + Get-Content c: \ users \ mhyman \ scripts \ files-to-fix.txt | Foreach-Object {copy-item <<<< $ _ d: \ junk} + CategoryInfo: ObjectNotFound: ('D: String) [Copy-Item], DriveNotFoundException + FullyQualifiedErrorId: DriveNotFound, Microsoft.PowerShell.Commands.CopyItemCommand </p>


Я знаю, что это просто, но я был бы очень признателен за помощь.

Ответы [ 2 ]

6 голосов
/ 04 октября 2011

Я думаю, что это окружающие кавычки, которые вызывают проблему (как указано в ошибке, говорящей, что диск с именем "D не найден. Попробуйте это:

get-content c:\users\scripts\files-to-fix.txt | %{ copy-item $_.trim('"') d:\junk}

Конечно, если вы можете контролировать текстовый файл, введите список без кавычек.

0 голосов
/ 04 января 2013

По вашим тэгам, буквам дисков и обратным слешам это, очевидно, среда Windows, в которой вы работаете, и хотя я не сценарист PowerShell, я лучше большинства пакетных сценариев и использую оператор For / If conditioanla, так каккороче, и вы передаете его своему файлу, вместо того, чтобы разбирать файл на команды reduudc в строке, поэтому в вашем примере:

for /F %%t in (the text file.txt) do copy /q %%t  d:\junk

А затем вы идете домой и никогда не беспокоитесь до следующего утра.Орнаативный режим runas, который может анализировать старые, более проверенные и стабильные команды DOS?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...