如何根据txt中关键词把所有包含任一关键词文件复制分拣到特定文件夹?

刚开始没有详细描述需求:bat所在路径下有多个子文件夹,详见图2,里面有rar和jpg两种文件,文件名为多个关键词,详见图345,我想根据"关键词.txt"每一行中的关键词去匹配当前文件夹下所有的子文件,只要包含任一关键词的就移动到指定文件夹!本文参考汽车维修笔记https://www.csche.com/

<# :
cls&echo off&cd /d "%~dp0"&mode con lines=5000
rem 根据一个txt文本文件里列出的多个关键字,从一个指定文件夹下搜索/查找出文件名称中存在有/包含有任意一个关键字的文件,并拷贝/复制到另一个新的指定文件夹里
set #=Any questions&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
set "current=%cd%"
powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
echo;%#% +%$%%$%/%_% %z%
pause
exit
#>
$b=[Convert]::FromBase64String("IC0tPiA=");
$c=[Text.Encoding]::Default.GetString($b);
$current=($env:current).trimend('\');
$txtfile=$current+"\关键字.txt"
$oldfolder="D:\xxx\原文件夹";
$newfolder="E:\yyy\新文件夹";
$keepstruct=$false;
if(-not (test-path -literal $txtfile)){write-host ('"'+$txtfile+'" path error or not exist');exit;}
if(-not (test-path -literal $oldfolder)){write-host ('"'+$oldfolder+'" path error or not exist');exit;}
if(-not (test-path -literal $newfolder)){[void][IO.Directory]::CreateDirectory($newfolder);}
$text=[IO.File]::ReadAllText($txtfile, [Text.Encoding]::GetEncoding('GB2312')).trim().toLower() -split '[\r\n]+';
$files=@(dir -literal $oldfolder -recurse|?{$_ -is [System.IO.FileInfo]});
for($i=0;$i -lt $files.length;$i++){
    $isit=$false;
    $base=$files[$i].Name.toLower();
    for($j=0;$j -lt $text.length;$j++){
        if($base.Contains($text[$j])){$isit=$true;break;}
    }
    if($isit){
        $newfile=$newfolder.trimend('\')+'\'+$files[$i].Name;
        if($keepstruct){
            $pathpart=$files[$i].Directory.FullName.trimend('\').Substring($oldfolder.trimend('\').length);
            $newpath=$newfolder.trimend('\')+$pathpart;
            $newfile=$newpath+'\'+$files[$i].Name;
        }else{
            $n=2;
            while(test-path -literal $newfile){
                $newfile=$newfolder.trimend('\')+'\'+$files[$i].BaseName+' ('+$n.toString()+')'+$files[$i].Extension;
                $n++;
            }
        }
        $files[$i].FullName+$c+$newfile;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值