[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 6# pd1


    可以使用,感谢

TOP

  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}
复制代码
1

评分人数

TOP

回复 4# terse


    提取Code="Aaaqws00121",双引号之间的值Aaaqws00121

TOP

这个提取哪段?还是不提取
Tender="浙Code="Aaaqws00121"司" Under="" Projer="芬" Prode="33224"  Pre="浙公司" Proy="10" Qro="按求" Coe="93A" UCode=""...

TOP

回复 2# jyswjjgdwtdtj


    不太会啊

TOP

用vbs啊 简单易懂

TOP

返回列表