基于相似文件和文件夹名称的文件排序

时间:2017-02-10 17:07:26

标签: powershell powershell-v2.0 powershell-ise

我仍然是PowerShell的新手,我正在尝试创建一个程序,它将根据文件的名称获取文件,并将它们移动到名称相似但不完全相同的文件夹中。 例如,让我们说我有3个文件,Apples.txt,Grapes.txt和Oranges.txt。我想将它们移动到相应的文件夹,ApplesUSA,GrapesNY,OrangesFL。 我可以使用循环和If-Then语句对其进行硬编码。即如果Apples.txt存在移动到ApplesUSA。但我希望它是动态的,所以如果以后添加其他文件和文件夹,我不必更新代码。有没有办法写一个声明,如果FileA和FolderB在名称上相似(两者都在名称中包含苹果),然后将fileA移动到FolderB,依此类推。 任何帮助赞赏。感谢!!!!

2 个答案:

答案 0 :(得分:0)

尝试类似这样的事情

public class CurrencyTextWatcher : Java.Lang.Object, ITextWatcher
{

    public void AfterTextChanged(IEditable s)
    {
        //~~~~
    }

    public void BeforeTextChanged(ICharSequence s, int start, int count, int after)
    {
        //~~~~
    }

    public void OnTextChanged(ICharSequence s, int start, int before, int count)
    {
        //~~~~
    }
}

答案 1 :(得分:0)

类似于@ Esperento的oneliner

gci *.txt -af|%{$File=$_.FullName;gci "$($_.BaseName)*" -ad|%{Move $File -Dest $($_.FullName) -whatif}}

详细版本:

PushD "X:\path\to\base\folder"
Get-ChildItem *.txt -File | ForEach-Object{
  $File = $_.FullName
  Get-ChildItem "$($_.BaseName)*" -Directory | ForEach-Object {
    Move-Item $File -Destination $_.FullName -whatif
  }
}
PopD

两个版本都需要PowerShell V3用于-File-Directory参数(及其别名-af / -ad)这可以用其他|Where-Object{ $_.PSIsContainer}代替各自| Where-Object{!$_.PSIsContainer}