2011-01-12 77 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