bat批处理:根据关键词列表把txt文档复制到不同文件夹?

bat批处理:根据关键词列表把txt文档复制到不同文件夹?,第1张

"txt标题当中可能包含多个关键词"中的"txt标题"指的什么?txt的名称吗?

不清楚你的实际文件/情况,仅以问题中的样例/说明为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,带帆跟要处理的文件放一起双击运行

<# :

cls&echo off&mode con lines=3000

rem 根据列出的多个关键字/关键词,将当前目录下文件名称中包含有这些关键字的txt文本文件分别拷贝/复制到以关键字命名的子文件夹

set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4

title %#% +%$%%$%/%@% %z%

cd /d "%~dp0"

powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::GetEncoding('GB2312')))) -Args '%~f0'"

echo%#% +%$%%$%/%@% %z%

pause

exit

#>

$keywords=@"

关键词1

关键词闹弊2

关键词3

关键词N

"@

$arr=$keywords.trim() -split '[\r\n]+'

[byte[]]$b=@(32,45,45,62,32)

$c=[Text.Encoding]::Default.GetString($b)

$self=get-item -liter $args[0]

$path=$self.Directory.FullName

$files=@(dir -liter $path|?{('.txt' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])})

for($i=0$i -lt $files.length$i++){

for($j=0$j -lt $arr.length$j++){

if($files[$i].BaseName.toLower().Contains($arr[$j].toLower())){

$newfolder=$path+'\蠢弯雹'+$arr[$j].trim()

if(-not (test-path -liter $newfolder)){[void][IO.Directory]::CreateDirectory($newfolder)}

$files[$i].Name+$c+$arr[$j]

}

}

}

首先悄首厅获取源文件夹下所有文件名:

string[] files = Directory.GetFiles(path)

path是文件夹全路径

循环files,用下述方法就可以把文件复制过去

FileInfo fi = new FileInfo(path1)

fi.CopyTo(path2, true)

path1源芹旁文件路径,path2目标启隐文件路径。

可以弄全自动创建文伏困件夹,根据文件名关乱局联把序号文件夹创建好,然后查找一个,关联对应的保存,可以分类存储这样子

如图,缺陪念可以在这个基础上设置分类存储,创建文件夹不以文件清单名,以文件清单名关联的序号进行自动创建文件夹,保存也是全自动保存到对应创建的文件夹,加一个映射表就可以了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12162681.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存