标题: [文本处理] [已解决]如何分析文本里面的内容建立文件夹? [打印本页]
作者: 786021512 时间: 2018-12-3 15:45 标题: [已解决]如何分析文本里面的内容建立文件夹?
本帖最后由 786021512 于 2018-12-5 14:37 编辑
假设我目录上有N个文本
文本内容如下- &ACCESS ppcd
- &REL 847
-
- ;***********************************************************
- ;*
- ;* Robot : Un060Rsb06(bathome)
- ;*
- ;***********************************************************
复制代码
....
我判断如果第二行 是&REL 847
就建立YES文件夹否则建立HOME文件夹
然后识别Un060Rsb06建立UN文件夹
紧跟着建立UN060
最后在建立Un060Rsb06文件夹并且把文件放进去
也就是会把文件放入\UN\UN060\Un060Rsb06\YES
其他情况就会建立\UN\UN060\Un060Rsb06\NO
有个关键点是Un060Rsb06(bathome)不是固定的它有可能也是
sbb06Rb06(bathome)
所以不碰判断字符个数来实现
还有个就是需要把子目录的文件也读取出来
并且统一是大写
最后是两种格式一种是.txt 还一种是.log
大神们有啥好办法
作者: WHY 时间: 2018-12-3 21:21
本帖最后由 WHY 于 2018-12-5 00:01 编辑
- @echo off & setlocal enabledelayedexpansion
- rem 移动到 E:\Test
- set "dstFolder=E:\Test"
-
- for /f "tokens=1,3delims=:" %%i in ('findstr /i /s /r /c:"^;\*.*: *[^0-9][^0-9]*[0-9][0-9]*[^0-9][^0-9]*" *.txt *.Log') do (
- rem 取第二行
- (for %%m in (a a) do set /p s=)<"%%i"
- if /i "!s!" == "&REL 847" (set FD4=YES) else (set FD4=NO)
-
- for /f "delims=(" %%m in ("%%j") do (
- for /f "tokens=*" %%m in ("%%m") do set "FD3=%%m"
- )
- for /f "tokens=1* delims=1234567890" %%m in ("!FD3!") do (
- set "FD2=!FD3:%%n=!"
- set "fd=%dstFolder%\%%m\!FD2!\!FD3!\!FD4!"
- if not exist "!fd!\" (
- rem 转换成大写字母
- for %%k in (Q W E R T Y U I O P A S D F G H J K L Z X C V B N M) do set "fd=!fd:%%k=%%k!"
- echo;md "!fd!\"
- )
- echo;move "%%i" "!fd!\"
- )
- )
- pause
复制代码
大写转换搞复杂了,改一下。
作者: WHY 时间: 2018-12-4 11:14
- @if(0)==(0) echo off
- dir /b /s *.txt *.Log | cscript //nologo //e:jscript "%~f0"
- pause & goto :EOF
- @end
-
- var dstFolder = 'E:\\Test\\'; //移动到 E:\Test 目录
- //var dstFolder = WSH.ScriptFullName.replace(/[^\\]+$/, '');
- var fso = new ActiveXObject('Scripting.FileSystemObject');
-
- while(!WSH.StdIn.AtEndOfStream){
- var strFile = WSH.StdIn.ReadLine();
- var objFile = fso.OpenTextFile(strFile, 1);
- var str = objFile.ReadAll();
- objFile.Close();
- var m1 = str.match(/^[^\r\n]*\r?\n&REL 847/i);
- var m2 = str.match(/^;\*.*: *(\D+)(\d+)([^(]+)\(/m);
- if(!m2) continue;
- var fd = dstFolder + m2[1] + '\\' + m2[1]+m2[2] + '\\' + m2[1]+m2[2]+m2[3]+ '\\' + (m1 ? 'YES' : 'NO');
- createFolder(fd.toUpperCase());
- var name = strFile.replace(/.*\\/, '');
- if(!fso.FileExists(fd + '\\' + name)) fso.getFile(strFile).Move(fd + '\\');
- }
-
- function createFolder(strFolder) {
- var arr = strFolder.split('\\');
- var fd = arr[0];
- for(var i=1; i<arr.length; i++) {
- fd += '\\' + arr[i];
- if(!fso.FolderExists(fd)) fso.CreateFolder(fd);
- }
- }
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |