返回列表 发帖
13# chenqldiy

你这是干啥的批处理?我有点看不懂

TOP

请高手帮我优化一下,我弄得这个批处理太慢
@echo off
setlocal enabledelayedexpansion
set a=0
echo                   过滤文本重复行只提取不相同行
echo.
set /p wb=输入要处理的文件名:
set /p wb1=输入要保存的文件名:
set wb=%wb:"=%
set wb1=%wb1:"=%

for /f "delims=" %%i in ('type "%wb%"') do (
set a=0
for /f "delims=" %%j in ('type "%wb%"') do if "%%i" == "%%j" (set /a a+=1)
if "!a!" leq "1" echo %%i>>"%wb1%".txt
)
echo                     处理完成
ping /n 2 127.0.1 >nul
goto :eof
1

评分人数

    • Batcher: 请编辑自己的帖子,把代码放到code标签里面 ...PB -2

TOP

17# wh1234567


能否学习一下怎样使用code标签?
http://bbs.bathome.net/thread-3473-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

楼主自己对着改:
@echo off
(for /f "delims=" %%a in (a.txt) do if not defined "%%a" echo %%a&set ""%%a"=a")>b.txt
start b.txtCOPY
***共同提高***

TOP

本帖最后由 wh1234567 于 2011-6-6 01:58 编辑

19# batman

回复版主,不是去除重复行,而是要提取不同的行,也就是将包含有重复的行全部去掉,剩下的就是没有重复过的行了,希望帮忙

例如:原文本1:
12
13
22
你好3?
13
12
处理后并输出的文本内容就是:
22
你好3?

TOP

还是一个不通用的解:
@echo off
for /f "delims=" %%a in (a.txt) do set /a "_%%a+=1"
(for /f "tokens=1,2 delims==_" %%a in ('set _') do if %%b equ 1 echo %%a)>b.txt
start b.txtCOPY
***共同提高***

TOP

本帖最后由 batman 于 2011-6-6 11:47 编辑
@echo off&setlocal enabledelayedexpansion
rem 每行字符间不能有空格,;><&tab以及成对的!字符
set "str= "
for /f "delims=" %%a in (a.txt) do (  
  if "!str: %%a =!" neq "!str!" (
    set "str=!str: %%a =!"
    ) else (
    set "str=!str! %%a "
  )
)   
(for %%a in (%str%) do echo %%a)>b.txt
start b.txtCOPY
***共同提高***

TOP

vbs的,应该很通用了:
Set fso = CreateObject("scripting.filesystemobject")
vbstr = fso.OpenTextFile("a.txt").ReadAll()
arr = Split(vbstr, vbCrLf)
For Each str In arr
  If InStr(vbout, str) = 0 Then
    vbout = vbout & str & vbCrLf
    Else
    vbout = Replace(vbout, str, "$@#^&><")
  End If
Next
fso.OpenTextFile("b.txt", 2, True).Write Replace(vbout, "$@#^&><" & vbCrLf, "")
MsgBox "ok"COPY
***共同提高***

TOP

@echo off
(for /f "delims= eol=" %%i in ('"type 1.txt|findstr ".*""') do (
if not defined %%i (echo;%%i) else call,set "#=%%#%%%%i "
set "%%i=0"
))>#
findstr /v /i "%#%" #>2.txt&del #COPY

TOP

23# batman

处理速度很快,但就是处理后多出了一行

TOP

看看学习!学习!

TOP

看看学习!学习!

TOP

返回列表