我有一个包含多个文件夹的文档库“ Documents1”。尝试编写Powershell脚本以将放置在多个子文件夹中的文件(必须从.xlsx读取)移动到同一文档库下的另一个名为“冗余”的文件夹。 Powershell的新手只是尝试了以下内容,但无济于事
$Web = Get-SPWeb "test.com"
$DocLib = $Web.Lists["Documents1"]
$filenames = Get-Content 'F:\sample\test4.xlsx' | Select-Object -Unique
$result = foreach($name in $filenames) {
$move = foreach ($ListItem in ($DocLib.Items | Where-Object { $_["Name"] -like "*$name*" })) {
$File = $DocLib.Files.Add($ListItem.Name, $ListItem, $true)
}
}
}
答案 0 :(得分:0)
假设您不介意将文件列表存储在txt文件中。您可以使用以下内容。
$SOURCEDIR="C:\Users\YOUR SOURCE DIR\TEST1"
$TARGETDIR="C:\Users\YOUR TARGET DIR\TEST2"
$FILELIST="C:\Users\LOCATION OF FILE LIST\filelist.txt"
$filenames = Get-Content $FILELIST
foreach ($file in $filenames)
{
Get-ChildItem -Path $SOURCEDIR -Recurse | Where-Object -FilterScript {($_.name -match $file)} | Move-Item -Destination $TARGETDIR
Write-Output "File moved " $file
}
答案 1 :(得分:0)
这是一个有关在同一文档库中的文件夹之间移动文件的演示,您可以添加判断条件,
$web=Get-SPWeb "http://sp"
$listName="lib"
$list = $web.Lists[$listName]
$TargetFolder = $Web.Url + "/" + $list.RootFolder.Url + "/"+ "bb"
$sourcefolder=$list.rootfolder.SubFolders["folder"]
$files = $sourcefolder.Files
foreach ($item in $files) {
$File=$Web.GetFile($Item.URL);
$TargetPath=$TargetFolder+"/"+$file.name;
$File.MoveTo($TargetPath);
Write-Host "Moved Item:"$item.Name;
}