Я работал над сценарием в Powershell, чтобы получить пути из файла CSV и переместить эти файлы по соответствующему пути в новое место назначения в другом месте. часто с другим именем файла.
Я использую версию 5.0
Например:
Source Destination : C:\1\2\3\File.pdf, D:\3\7\8\9\FILE1.pdf
Теперь я использовал следующий скрипт, и изначально он смог переместить некоторые файлы:
Import-CSV "R:\MoveFiles.csv" -Delimiter "," -ErrorAction Stop | ForEach-Object{Move-Item -path $_.Source -Destination $_.Destination}
Хотя примерно на полпути выполнения он начал возвращать эту ошибку:
Move-Item: не удалось найти часть пути. В строке: 1 символ: 238 + ... Каждый-объект {Move-Item -Literalpath $ .Source -Destination $ .Destina ...
+ ~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ < br> + CategoryInfo: WriteError: (Q: \ RECORDS \ PRIV ...- 4-20_N1969.pdf: FileInfo) [Move-Item], DirectoryNotFoundException
+ FullyQualifiedErrorId: MoveFileInfoItemIOError, Microsoft.PowerShell.Commands.MoveItemCommand
Насколько я могу судить, нет никаких специальных символов, которые помешали бы найти путь. Если я заменю Move-Item на Copy-Item, он вернет ту же ошибку. Я также проверил пути, чтобы узнать, верны они или нет.
Я в своем уме, чтобы кончить этим. Не уверен, что еще попробовать. В конце концов, я же полный новичок.
Спасибо
NB: Я нашел решение этой проблемы. Похоже, что командлет Move-Item не любит создавать каталоги.
Вместо этого я сначала создал каталоги с помощью New-Item -directories, получив содержимое из текстового документа, где каждая строка представляет путь (без заголовков).
После создания пустых каталогов исходный сценарий работал так, как задумано.
Для всех, кто интересуется, вот сценарий каталогов:
#CREATE DIRECTORIES FROM CSV
cd
$name = Get-Content ".\Create_New_Directories\Move_Directories_Test.txt"
Foreach ($_ in $name)
{
New-Item -Force -verbose -path $_ -Type Directory
}
Out-File ".\Create_New_Directories\Newoutput.txt"
Всем спасибо за помощь.