Board logo

标题: [文件操作] 【已解决】批处理怎样获取文件字段后按此字段值归类移动? [打印本页]

作者: 304802301    时间: 2023-2-15 20:42     标题: 【已解决】批处理怎样获取文件字段后按此字段值归类移动?

本帖最后由 304802301 于 2023-2-16 19:52 编辑

各位大佬:

1、我这里有一个文件夹名字叫“零散文件夹”,里面有很多文件夹,每个文件夹里面有1个文件(格式不定,但都可以用txt方式打开),每个文件里面都有一个字段Code="X" ,里面的X为值,值是不定的,字段出现的位置也不定,但一定会有这个字段和值。具体如下:
零散文件夹\1\efec.tf【文件里面的Code="A3400121" 】
零散文件夹\2\adqw.qwaa【文件里面的Code="Aasqw00121"】
零散文件夹\3\awdkqw.qwqw【文件里面的Code="Aaqwqww00121"】
零散文件夹\4\102102.1212aw【文件里面的Code="Aaqwqww00121"】
零散文件夹\5\102-0oaposkd.12adsd【文件里面的Code="Aaqwqww00121" 】
零散文件夹\6\qweqw-asdawq-asdas.asdqw【文件里面的Code="Aaqwqww00121"】
零散文件夹\7\99101-212w12.asdwwwwww【文件里面的Code="Aaqwqws00121"】
零散文件夹\8\qwaoiwjd.090【文件里面的Code="Aaqwqws00121"】
零散文件夹\9\oo000l00s.s【文件里面的Code="Aaaqws00121"】
零散文件夹\10\0apskdal.sadwqqqqqqw【文件里面的Code="Aaaqws00121"】

2、另外还有一个文件夹名字叫“目标文件夹”,需要按要求把“零散文件夹”里面的文件夹+文件移动到“目标文件夹”
3、我的要求是执行这个bat后,读取每个文件里面的Code字段和值(比如Code="A3400121"),在“目标文件夹”里面新建一个文件夹,名字就是这个Code值(A3400121),并把相同Code值的文件连同其父文件夹一同移动到这个文件夹里面来。
4、移动后的效果如下:
============================================
目标文件夹\A3400121\1\efec.tf
=============================================
目标文件夹\Aasqw00121\2\adqw.qwaa
==============================================
目标文件夹\Aaqwqww00121\3\awdkqw.qwqw
目标文件夹\Aaqwqww00121\4\102102.1212aw
目标文件夹\Aaqwqww00121\5\102-0oaposkd.12adsd
目标文件夹\Aaqwqww00121\6\qweqw-asdawq-asdas.asdqw

==============================================
目标文件夹\Aaqwqws00121\7\99101-212w12.asdwwwwww
目标文件夹\Aaqwqws00121\8\qwaoiwjd.090

===============================================
目标文件夹\Aaaqws00121\9\oo000l00s.s
目标文件夹\Aaaqws00121\10\0apskdal.sadwqqqqqqw

==============================================
注意:上述文件中有部分文件的code值是一样的,需要归类在一起。
实例文件在百度网盘上,链接:https://pan.baidu.com/s/15YBw-bIBL07zAob3fLSMmg 提取码:nfsf
作者: jyswjjgdwtdtj    时间: 2023-2-15 20:55

用vbs啊 简单易懂
作者: 304802301    时间: 2023-2-15 21:38

回复 2# jyswjjgdwtdtj


    不太会啊
作者: terse    时间: 2023-2-16 11:36

这个提取哪段?还是不提取
Tender="浙Code="Aaaqws00121"司" Under="" Projer="芬" Prode="33224"  Pre="浙公司" Proy="10" Qro="按求" Coe="93A" UCode=""...
作者: 304802301    时间: 2023-2-16 14:08

回复 4# terse


    提取Code="Aaaqws00121",双引号之间的值Aaaqws00121
作者: pd1    时间: 2023-2-16 15:03

  1. <# :
  2. @echo off
  3. powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0' |Out-String|Invoke-Expression"
  4. echo 已完成!&pause
  5. #>
  6. dir .\零散文件夹\|?{$_ -is [System.IO.DirectoryInfo]}|%{$d=$_.name;$n=$_.FullName;[IO.File]::ReadAllText((dir $_.FullName)[0].fullName) -match '(?<!U)Code="(.*?)"';$code=$Matches[1];if(Test-Path 目标文件夹/$code){}else{md 目标文件夹/$code};move $_.FullName 目标文件夹/$code}
复制代码

作者: 304802301    时间: 2023-2-16 19:51

回复 6# pd1


    可以使用,感谢




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2