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

[文本处理] 请老师抽空帮写一个批处理文本合并去重复(已解答,谢谢各位老师的帮助!)

本帖最后由 PCL0769 于 2021-10-12 17:03 编辑

01文件夹内有以下文本
1.txt
2.txt
3.txt
4.txt
......
N.txt
02文件夹内有以下文本
1.txt
2.txt
3.txt
4.txt
......
N.txt
03文件夹内有以下文本
1.txt
2.txt
3.txt
4.txt
......
N.txt
04文件夹内有以下文本
1.txt
2.txt
3.txt
4.txt
......
N.txt

05文件夹内有以下文本
........
有N个文件夹
请帮忙写一个将以上N个文件夹中的N个同名的文本合并然后生成一个新的文件夹,文件夹中同样生成合并后同名的文本
合并文件夹内有以下文本
1.txt
2.txt
3.txt
4.txt
......
N.txt

以下是原文档中的小部分格式内容,需要在合并后新生成的文本中去除不完整的行,去重复去特定行的语句,谢谢!
SZ300951        20210226        4727036
SZ300999        20210226        -201125534
SZ301000       20210原文本中少部分会有这种不完整的行,在合并后新生成的文本中将不完整的行去除)
SZ300          (原文本中少部分会有这种不完整的行,在合并后新生成的文本中将不完整的行去除)
SZ138811-QQ84299        20210226        0 (原文本中少部分会有此行,20210226 原文本中是按日期的一个变量,现需在新合并后生成的文本中将此行去除)

合并时能不能将记事本中的字符替换,替换条件如下:
SH替换成1|
SZ替换成0|   
SZ300951        20210226之间的空格替换成|   
20210226        4727036之间的空格替换成|

合并后的最终文本内容格式:
0|000001|20210104|45971388
1|600004|20210104|22269128


另:
以下是完整的两行。
SZ300951        20210226        4727036
SZ300999        20210226        -201125534

以下是不完整的两行,如果不好写就忽略此条件也行
SZ301000       20210
或者
SZ300   

以下是多余无用的行,此行内容不需要     (20210226 是按日期变化的变量)
SZ138811-QQ84299        20210226       0

不完整的行是原记事本偶尔某几个记事本中才会出现,不是所有的都会出现。
生成新的合并记事本时将这些不完整的去除,不完整的行不生成到这个新的合并记事本中。

请老师抽空帮写一个批处理,谢谢!

本帖最后由 PCL0769 于 2021-10-4 12:55 编辑

回复 2# newswan
老师好!
SZ300951        20210226        4727036
SZ300999        20210226        -201125534
以上是完整的两行。

以下是不完整的两行,如果不好写就忽略此条件也行
SZ301000       20210
或者
SZ300   

以下是多余无用的行,此行内容不需要     (20210226 是按日期变化的变量)
SZ138811-QQ84299        20210226       0

不完整的行是原记事本偶尔某几个记事本中才会出现,不是所有的都会出现。
生成新的合并记事本时将这些不完整的去除,不完整的行不生成到这个新的合并记事本中

TOP

回复 4# newswan
老师好!
是BAT吗?双击后只是闪了一下,没运行。

TOP

本帖最后由 PCL0769 于 2021-10-4 14:03 编辑

回复 7# newswan
老师好!
看到链接了,
正式版 - http://www.bathome.net/s/tool/index.html
测试版 - http://bcn.bathome.net/s/tool/index.html
是下载其中任一一个都行吗?谢谢老师!
没找到sed下载,都是SED应用方面的,因为级别不够一小时只能跟5帖

还是闪退,没运行

TOP

回复 11# newswan
找不到 C:\*.txt
文件名、目录名或卷标语法不正确。

@echo off
setlocal ENABLEDELAYEDEXPANSION

set sour=C:\Users\Administrator\Desktop\15单\新建文件夹
set dest=C:\Users\Administrator\Desktop\15单\新建文件夹2

del %dest%\*.txt

for /f "usebackq tokens=* delims=" %%a in (`dir /s /b "%sour%\*.txt"`) do (
    sed -r -n -e "/\w+\s+\w+\s+\w+/p" -e "/%exclude%/d" "%%~fa">> "%dest%\%%~na.txt"
)

for /f "usebackq tokens=* delims=" %%a in (`dir /s /b "%dest%\*.txt"`) do (
    set _file_=%%~fa
    for /f "usebackq tokens=* delims=" %%a in ("%_file_%") do (
        set __%%a=%%a
    )
   
    (
        for /f "usebackq tokens=2 delims==" %%a in (`set __`) do (
            echo %%a
        )
    ) > "%_file_%"
    notepad "%_file_%"
)

TOP

本帖最后由 PCL0769 于 2021-10-4 18:12 编辑

回复 15# qixiaobin0715
老师好!
现在用老师你上次帮写的D:/ABC合并,然后用vbs  SZ替换为0|   SH 替换为1|  空格替换成| SZ138...-QQ...替换成空格(此处还是留有不全的一行数据)。
分两步完成,首先用bat合并 ,然后vbs替换,这么做的结果是会留有不完整的行数据

0|301075|20210930|44406634
1|601077|20210930|-67302759
0||20210930|0 (0|后面的空格就是SZ139...-QQ...替换后的空数值)

newswan老师好!
楼上的代码还是闪退。
谢谢!

TOP

回复 19# newswan
老师好!刚刚传了部分文本到云盘。
链接:
https://pan.baidu.com/s/1hqJLvFBn6n1Y-g9518TVyw
提取码:
9ewg

TOP

回复 22# Batcher
好的谢谢老师提醒,以后注意。
双击运行时,只见到闪了一下,来不及看批处理出现什么问题就退出界面,小白一枚,还请老师见谅!

TOP

本帖最后由 PCL0769 于 2021-10-4 23:08 编辑

回复 21# newswan
老师好!谢谢!
请教老师,后缀是用bat吗?
源数据放在桌面C:\Users\Administrator\Desktop\15单\金额16\补数据文件夹下
这里是不是要这么修改:
$sour = "C:\Users\Administrator\Desktop\15单\金额16\补数据\aaa"
$dest = "C:\Users\Administrator\Desktop\15单\金额16\补数据\ccc"
按这修改后还是闪退,是不是在最后加上PUSH就不会出现闪退,实在太快退出界面不知道没运行起来是什么原因。

TOP

本帖最后由 PCL0769 于 2021-10-5 13:40 编辑

回复 29# newswan
老师好!
下面是从论坛组装的VBS替换
Set WshShell = CreateObject("Wscript.Shell")
WshShell.Run "cmd /c dir /s/b *.txt > list.txt",vbHide
Wscript.Sleep 1000
sFile = "list.txt"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set oFile = objFSO.OpenTextFile(sFile,1)
Do While Not oFile.AtEndOfStream
strLine = oFile.ReadLine
If Len(strLine) > 0 Then
Set File = objFSO.OpenTextFile(strLine, 1)
aryLines = File.ReadAll
File.Close
aryLines = Replace(aryLines, "SZ", "0|")
aryLines = Replace(aryLines, "SH", "1|")

Set File = objFSO.OpenTextFile(strLine, 2)
File.Write aryLines
File.Close
End If
Loop
oFile.Close
objFSO.DeleteFile sFile
Set objFSO = Nothing

这个替换效率还行,就是得分两步,一:bat合并  二:vbs替换
vbs将不完整的行和那个手机号QQ号的删除就搞不懂怎么组装

用这个VBS替换,目前一共有36个文件夹的内容,替换的话在10分钟内就完成了

只要转换的内容不出错,多花点时间没关系,最初的原始数据是个三列cvs,1月份到现在的数据拆分转换成现在的01-09文件夹,电脑不关机总运行了3天3夜。速度慢点没关系,只要数据转换不出错就行

TOP

回复 31# xczxczxcz
老师好!
PS又是什么?
恳请老师详解,谢谢!

TOP

回复 31# xczxczxcz
老师好!能将这个PS发出来吗?谢谢!

TOP

谢谢各位老师出手帮助!

TOP

回复 36# newswan

老师好!
请帮忙看看这个能用批处理完成吗?谢谢!
http://www.bathome.net/thread-60353-1-1.html

TOP

回复 45# went
老师好!
请帮忙看看这个能用批处理完成吗?谢谢!
http://www.bathome.net/thread-60353-1-1.html

TOP

返回列表