我正在尝试使用基于文件夹名称的文本文件构建带有变量的脚本,在一个目录中找到它们,然后将它们移动到另一个目录(或在其他脚本中删除它们)。
例如:
$foldernames = Get-Content -Path "C:\Users\Me\Desktop\Folders.txt"
$startpath = "C:\Users\Me\Desktop\Test"
$topath = "C:\Users\Me\Desktop\Moved"
然后在$startpath
的文件夹名称中找到每个选项行,如果找到它们,将其移至$topath
。
答案 0 :(得分:0)
这将完成工作。 [咧嘴]它会伪造在您要移动的目录的文本文件中读取[使用Get-Content实作],然后在源中收集目录的目录位置。接下来,它会测试.Name
是否在要移动的目录列表中。最后,它运行Move-Item
来移动目录。
请注意最后的-WhatIf
...准备好对测试数据集进行实时测试时,请将其删除。 [咧嘴]
# fake reading in a text file
# in real life, use Get-Content
$ToMoveDirNameList = @(
'test1'
'TuTu'
'GoGoGadget'
'WPF'
)
$SourceDir = $env:TEMP
$DestDir = 'd:\temp'
$SourceDirList = Get-ChildItem -LiteralPath $SourceDir -Directory
foreach ($SDL_Item in $SourceDirList)
{
if ($SDL_Item.Name -in $ToMoveDirNameList)
{
Move-Item -LiteralPath $SDL_Item.FullName -Destination $DestDir -WhatIf
}
}
输出...
What if: Performing the operation "Move Directory" on target "Item: C:\Temp\test1 Destination: D:\temp\test1".
What if: Performing the operation "Move Directory" on target "Item: C:\Temp\TuTu Destination: D:\temp\TuTu".
What if: Performing the operation "Move Directory" on target "Item: C:\Temp\WPF Destination: D:\temp\WPF".
注释#2-没有错误检查。如果目的地已经有一个同名目录,这将为您提供许多红色错误文本。
注释#3-也没有未找到目录的记录。 [咧嘴]