2011-01-12 75 views
6

我有一個文件'Text.dat',其中包含一些不需要的數據。我需要編寫一個DOS批處理文件來刪除不需要的數據,並將它放在其他文件中,比如說'file2.dat',並且只保留原始文件和需要的數據。請幫助使用DOS批處理文件從文件中刪除一些內容

+2

你能描述不需要的數據?它是在逐行的基礎上嗎?也就是說,如果行包含這些不需要的數據,您是否想要刪除整行或僅刪除數據?原始文件是否應該被修改也是不清楚的。 – Casey 2011-01-12 05:06:18

+0

嗨..感謝您的更新..正如您正確地指出其在行的基礎上。也就是說,我需要刪除整個行,如果它有不需要的文本。我必須將刪除的行放在另一個文件中,並將原來的文件刪除,並刪除想要刪除的行(原始文件應該修改,只應該只有想要的數據) – Quicky 2011-01-22 05:36:36

回答

4

使用FIND命令。

find /v "unwanted" text.dat >file2.dat 
8

相反的find我會用findstr這是一個更強大的find

要創建一個文件只包括不需要的數據:

findstr "unwanted" text.dat > unwanted.dat

要創建text.dat一個新的文件與 「無用」 的數據刪除:

findstr /v "unwanted" text.dat > text_cleaned.dat

在線findstr參考可以找到here

完整的命令行參考:

C:\>findstr /? 
Searches for strings in files. 

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file] 
     [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]] 
     strings [[drive:][path]filename[ ...]] 

    /B   Matches pattern if at the beginning of a line. 
    /E   Matches pattern if at the end of a line. 
    /L   Uses search strings literally. 
    /R   Uses search strings as regular expressions. 
    /S   Searches for matching files in the current directory and all 
      subdirectories. 
    /I   Specifies that the search is not to be case-sensitive. 
    /X   Prints lines that match exactly. 
    /V   Prints only lines that do not contain a match. 
    /N   Prints the line number before each line that matches. 
    /M   Prints only the filename if a file contains a match. 
    /O   Prints character offset before each matching line. 
    /P   Skip files with non-printable characters. 
    /OFF[LINE] Do not skip files with offline attribute set. 
    /A:attr Specifies color attribute with two hex digits. See "color /?" 
    /F:file Reads file list from the specified file(/ stands for console). 
    /C:string Uses specified string as a literal search string. 
    /G:file Gets search strings from the specified file(/ stands for console). 
    /D:dir  Search a semicolon delimited list of directories 
    strings Text to be searched for. 
    [drive:][path]filename 
      Specifies a file or files to search. 

Use spaces to separate multiple search strings unless the argument is prefixed 
with /C. For example, 'FINDSTR "hello there" x.y' searches for "hello" or 
"there" in file x.y. 'FINDSTR /C:"hello there" x.y' searches for 
"hello there" in file x.y. 

Regular expression quick reference: 
    .  Wildcard: any character 
    *  Repeat: zero or more occurances of previous character or class 
^  Line position: beginning of line 
    $  Line position: end of line 
    [class] Character class: any one character in set 
    [^class] Inverse class: any one character not in set 
    [x-y] Range: any characters within the specified range 
    \x  Escape: literal use of metacharacter x 
    \<xyz Word position: beginning of word 
    xyz\> Word position: end of word