1. Tải bản cài đặt AutoIT mới nhất

    Chào Khách. Nếu bạn mới tham gia và chưa cài đặt AutoIT.
    Vui lòng vào topic trên để tải bản AutoIT mới nhất nhé
    Dismiss Notice
  2. Quy định và nội quy

    Chào Khách. Vui lòng đọc kỹ nội quy và quy định của diễn đàn
    Để tránh bị ban một cách đáng tiếc nhé!
    Dismiss Notice
  3. Hướng dẫn chèn mã AutoIT trong diễn đàn

    Chào Khách. Vui lòng xem qua bài viết này
    Để biết cách chèn mã AutoIT trong diễn đàn bạn nhé :)
    Dismiss Notice

Hỏi đáp [Solved] Xóa nhiều dòng trong file text

Thảo luận trong 'Thảo luận chung - Hỏi đáp' bắt đầu bởi Wizard Gekko, 30/9/15.

Trạng thái chủ đề:
Không mở trả lời sau này.
  1. Wizard Gekko

    Wizard Gekko Thành viên mới
    • 1/6

    Tham gia ngày:
    28/9/15
    Bài viết:
    2
    Đã được thích:
    4
    mình có một file text có 100 dòng làm sao để xóa từ dòng 5 đến dòng cuối cùng ạ em cảm ơn
     
    kamsamita1 and Phan Dong like this.
  2. Tungtata

    Tungtata Tà tà mà sống ~ Thành viên BQT Administrator
    • 93/113

    Tham gia ngày:
    25/8/15
    Bài viết:
    289
    Đã được thích:
    924
    Nơi ở:
    Hà Nội
    thay vì xóa dòng từ 5 đến cuối thì hãy đọc từ dòng 1 đến 4 và lưu lại vào file text b nhé
     
    kamsamita1 and Phan Dong like this.
  3. Tungtata

    Tungtata Tà tà mà sống ~ Thành viên BQT Administrator
    • 93/113

    Tham gia ngày:
    25/8/15
    Bài viết:
    289
    Đã được thích:
    924
    Nơi ở:
    Hà Nội
    Mã (AutoIt):

    $Array = FileReadToArray('text.txt')
    $FO = FileOpen('text.txt', 2 + 128)
    For $i = 0 To 3 ;(element 1-4)
        FileWrite($FO, $Array[$i] & @CRLF)
    Next
     
     
    kamsamita1 and Phan Dong like this.
  4. SonNguyen

    SonNguyen Thành viên mới
    • 3/6

    Tham gia ngày:
    25/9/15
    Bài viết:
    9
    Đã được thích:
    21
    Mình làm bằng cách này.

    Mã (AutoIt):
    #include <File.au3>
    $File = @ScriptDir&'/Text.txt'
    Global $aReadLine

    ;~ Doc dong kem voi Flag Count
    _FileReadToArray($File,$aReadLine,1)

    ;~ Tra ve Array chua noi dung file text
    _ArrayDisplay($aReadLine)

    ;~ Xoa tu dong thu 5 den het
    ;~ $EndLine la dong cuoi cung bi xoa. Xoa den het nen lay gia tri $aReadLine[0] duoc tra ve tu _FileReadToArray voi flag Count
    ;~ $StartLine la dong bat dau xoa. +1 de thay vao cho thang $aReadLine[0] la so luong dong.

    $StartLine = 3+1
    For $EndLine = $aReadLine[0] To $StartLine Step -1
        _ArrayDelete($aReadLine,$EndLine)
    Next

    ;~ Tra ve array sau khi xoa
    _ArrayDisplay($aReadLine)

    ;~ Ghi file text moi
    _FileWriteFromArray("NewText.txt", $aReadLine, 1)
    File text để test đây:
    Mã (Text):
    [Dòng 1] Look, I was gonna go easy on you not to hurt your feelings
    [Dòng 2] But I'm only going to get this one chance
    [Dòng 3] (Six minutes, six minutes)
    [Dòng 4] Something's wrong, I can feel it
    [Dòng 5] (Six minutes, six minutes, Slim Shady, you're on)
    [Dòng 6] Just a feeling I've got
    [Dòng 7] Like something's about to happen
    [Dòng 8] But I don't know what
    [Dòng 9] If that means, what I think it means, we're in trouble
    [Dòng 10] Big trouble. And if he is as bananas as you say
    [Dòng 11] I'm not taking any chances
    [Dòng 12] You were just what the doctor ordered
     
    kamsamita1, Phan Dong and Tungtata like this.
  5. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    1 dòng ứng với 1 @CR => stringmid từ đầu đến @CR thứ $line - 1 :p:p:p

    Func _Mid($Txt_path, $line)
    $Read = FileRead($Txt_path)
    Return StringMid($Read, 1, StringInStr($Read, @CR, 1, $line - 1) - 1)
    EndFunc

    MsgBox(4096, 0, _Mid(@DesktopDir & '\1.txt', 3))
     
    kamsamita1, Phan Dong and Tungtata like this.
  6. tuoitre

    tuoitre Thành viên năng động
    • 28/34

    Tham gia ngày:
    15/9/15
    Bài viết:
    135
    Đã được thích:
    89
    cho mình hỏi thêm, làm sao để xóa 4 5 dòng ở giữa các dòng đó. ví dụ : có 30 dòng, mình muốn xóa dòng thứ 10 đến dòng thứ 18 chẳng hạn :) ..
     
  7. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    Cách dễ nhất: đọc txt và lưu từng dòng trong 1 mảng với hàm FileReadToArray, dòng 1 tương ứng với phần tử 0, muốn xoá dòng nào thì gán cho phần tử đó là rỗng, sau đó nối mảng thành chuỗi trở lại :)) Ví dụ: 1 txt gồm 30 dòng, Xoá dòng 2, dòng 4, dòng 10 đến 18

    Local $aTXT = FileReadToArray('đường dẫn txt')
    $aTXT[
    1] = ''
    $aTXT[
    3] = ''
    For $i =
    9 to 17
    $aTXT[$i] = ''
    Next

    Local $Ketqua
    For $k = 0 To UBound($aTXT) - 1

    $Ketqua &= $aTXT[$i] & ($aTXT[$i] ? @CRLF : '') ;nếu rỗng thì không thêm ký tự xuống dòng
    Next

    MsgBox(4096, 0, $Ketqua)

    ;Code ghi lại Kết quả vào txt
     
  8. Cô Giáo Thảo

    Cô Giáo Thảo Thành viên
    • 18/23

    Tham gia ngày:
    4/1/16
    Bài viết:
    57
    Đã được thích:
    91
    Nơi ở:
    ĐH Sư Phạm Hà Nội
    ^ bạn Hoàng giống ý cô đó.
    Dùng Filereadtoarray để chuyển về mảng rồi _arraydelete mà xóa những dòng mong muốn :D
    Thân!
     
  9. tuoitre

    tuoitre Thành viên năng động
    • 28/34

    Tham gia ngày:
    15/9/15
    Bài viết:
    135
    Đã được thích:
    89
    cám ơn Huân Hoàng vs cô giáo thảo =)) ..để tớ thử cách này...
    cơ mà sao autoit lại không có hàm delete dòng trong file text nhỉ =.=''..giá mà có thêm 1 hàm có phải là tiện hok ..lại phải đổi qua array rồi lưu lại..

    với lại phần huân hoàng : ở phần nối ketqua lại lộn từ $k về biến $i rồi :)
     
    Chỉnh sửa cuối: 8/4/16
Trạng thái chủ đề:
Không mở trả lời sau này.

Chia sẻ trang này

Đang tải...