2011-01-12 23 views
6

Tengo un archivo 'Text.dat' que contiene algunos datos no deseados. Necesito escribir un archivo de lote de DOS para eliminar los datos no deseados y ponerlo en otro archivo, digamos, 'archivo2.dat' y dejar solo el archivo original con los datos requeridos. Pls ayudaPara eliminar parte del contenido de un archivo con el archivo por lotes DOS

+2

Podría describir los datos no deseados? ¿Es línea por línea? Es decir, si la línea contiene esta información no deseada, ¿desea eliminar toda la línea o solo los datos? Tampoco está claro si el archivo original debe ser modificado en absoluto. – Casey

+0

Hola ... Gracias por la actualización ... Como correctamente señaló su línea en línea ... Es decir, necesito eliminar toda la línea si tiene el texto no deseado. Y tengo que colocar las líneas eliminadas en otro archivo dejando el archivo original con las líneas deseadas eliminadas (el archivo original debe modificarse y solo debería tener datos deseados) – Quicky

+0

El título no coincide con la pregunta. Cambie la redacción por motivos de SEO: busqué un script por lotes que QUITARÁ el texto de un archivo, no el texto EXTRAER. ¡Gracias! – Rustavore

Respuesta

4

Utilice el comando FIND.

find /v "unwanted" text.dat >file2.dat 
+0

Creo que el modificador/v mostrará todas las líneas que NO contienen "no deseado". De su pregunta, esto es un poco ambiguo, pero creo que quiere poner los datos no deseados en otro archivo. – Casey

+0

+1 Gracias Mark. Exactamente lo que necesitaba. –

+0

@mark ¿Cómo cambiaría esto para que solo elimine las líneas que coinciden exactamente con una cadena? –

8

En lugar de find me gustaría utilizar findstr que es una versión más potente find.

Para crear un archivo que consta de sólo los datos deseados:

findstr "unwanted" text.dat > unwanted.dat

Para crear un nuevo archivo de text.dat con los datos "no deseados" Eliminado:

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

La referencia en línea findstr se puede encontrar here.

completa referencia de línea de comandos:

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 
Cuestiones relacionadas