【发布时间】:2014-04-23 04:36:39
【问题描述】:
我正在尝试编写一个 PowerShell 脚本来根据几个条件将文件从一个目录移动到另一个目录。例如:
文件名示例:testingcenter123456-testtype-222-412014.pdf。
脚本应在第一个破折号(“-”)之前查找“testingcenter123456”,然后参考哈希表以获取匹配键。所有文件都遵循上面显示的格式。
-
一旦找到该键,它应该使用该键的对应值(例如:“c:\temp\destination\customer7890”)作为目标文件路径并将文件复制到那里。
李>
我环顾 StackOverflow,发现一些问答似乎回答了类似问题的一部分,但事实上我对此很陌生,导致我拼凑的脚本根本不起作用。
这是我目前所拥有的:
$hashTable = ConvertFrom-StringData ([IO.File]::ReadAllText("c:\temp\filepaths.txt"))
$directory = "c:\temp\source"
Get-ChildItem $directory |
where {!($_.PsIsContainer)} |
Foreach-Object {
Foreach ($key in $hashTable.GetEnumerator()){
if ($_.Name.Substring(0,$_.Name.IndexOf("-")) -eq $key.Name){
Copy-Item -Path $_.fullname -Destination $key.Value
}
}
}
如果有人可以帮助我摆脱困境并希望在此过程中了解一些有关 PowerShell 的知识,我将不胜感激。
【问题讨论】:
-
您能告诉我们运行此程序时发生了什么吗? :) 您是否收到错误或意外结果?这将有助于我们查明问题。
-
有没有打印出$key和$key.value来检查内容(意思是filepath.txt的格式好不好?)
标签: powershell hashtable