Ms-Dos - Necesito un pequeño programita, a ser posible en BAT. (20 €)

 
Vista:
sin imagen de perfil
Val: 15
Ha aumentado 1 puesto en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Necesito un pequeño programita, a ser posible en BAT. (20 €)

Publicado por Marcos (7 intervenciones) el 19/12/2019 14:51:40
Hola!

Necesito si es posible un archivo bat, que me vaya leyendo una cadena de texto cada vez de muchas líneas de un archivo1.txt, compruebe si esa cadena existe tanto en archivo2.txt como en archivo3.txt, y si existe en ambos archivos, me la guarde en un archivo4.txt

El texto a buscar ocupa sólo una línea en los archivos. Ejemplo, una lista de nombres en todos los archivos.

No es mucho presupuesto, pero a quién le interese y al primero que me pueda crear el programita y funcione, le paso 20 € por paypal.

Gracias de antemano.

Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Necesito un pequeño programita, a ser posible en BAT. (20 €)

Publicado por Antoni Masana (811 intervenciones) el 19/12/2019 15:36:30
Solo tienes que rellenar los nombre de los 4 ficheros.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@echo off
set File_1=C:\...\....txt
set File_2=C:\...\....txt
set File_3=C:\...\....txt
set File_4=C:\...\....txt
 
FOR /F "delims=*" %%a in (%File_1%) do Call :Buscar "%%a"
goto :EOF
 
:Buscar
   set Texto=%1
 
   Find %Texto% %File_2% >nul 2>&1
   set Esta_2=%ErrorLevel%
 
   Find %Texto% %File_3% >nul 2>&1
   set Esta_3=%ErrorLevel%
 
   IF %Esta_2% EQU 0 IF %Esta_3% EQU 0 echo %Texto% >>%File_4%
   goto :EOF

No esta probado.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 15
Ha aumentado 1 puesto en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Necesito un pequeño programita, a ser posible en BAT. (20 €)

Publicado por Marcos (7 intervenciones) el 19/12/2019 17:57:26
Muchas gracias por la pronta respuesta, lo he estado probando y es justo lo que quiero.

Se podría hacer que cuando guarde los resultados el texto no lo guarde entre comillas, porque me aparece así "texto".

Y si los archivos los renombro a 1.txt, 2 txt, etc hasta 15 por ejemplo.

Qué me pida el número de archivos y en un bucle el vaya cambiando los nombres de los archivos a buscar el texto. 1, 2 - 2,3 - 3,4 --........ -- 14,15. etc.

Escríbame por privado su correo de su cuenta paypal para pasarle el dinero, gracias!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Necesito un pequeño programita, a ser posible en BAT. (20 €)

Publicado por Antoni Masana (811 intervenciones) el 19/12/2019 20:28:13
He realizado una pequeña modificación para quitar las comillas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@echo off
set File_1=C:\...\....txt
set File_2=C:\...\....txt
set File_3=C:\...\....txt
set File_4=C:\...\....txt
 
FOR /F "delims=*" %%a in (%File_1%) do Call :Buscar "%%a"
goto :EOF
 
:Buscar
    set Texto=%1
 
    Find %Texto% %File_2% >nul 2>&1
    set Esta_2=%ErrorLevel%
 
    Find %Texto% %File_3% >nul 2>&1
    set Esta_3=%ErrorLevel%
 
    IF %Esta_2% == 1 goto :EOF
    IF %Esta_3% == 1 goto :EOF
    set Texto=%Texto:~1,-1%
    echo %Texto% >>%File_4%
    goto :EOF

Ahora lo que no entiendo es lo de los diferentes ficheros.
De qué ficheros a de leer, para cada fichero con quien tiene que comparar y donde lo tiene que guardar.
Y como se llaman los ficheros.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 15
Ha aumentado 1 puesto en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Necesito un pequeño programita, a ser posible en BAT. (20 €)

Publicado por Marcos (7 intervenciones) el 19/12/2019 22:49:52
Gracias por lo de las comillas, le pongo un ejemplo real con 67 archivos para tratar de explicarme mejor. Y dado que con el @echo off no se ve nada y puede tardar bastante porque son muchos datos, si se puede poner que vaya mostrando el número de archivos que va ejecutando, mejor que mejor.

Qué el programa pregunte el número de archivos a tratar. (En este caso 67). Los archivos tienen el formato número.txt

File_1=1.txt (archivo de donde se extraen los datos a buscar, que es el mismo de File_2) Es decir todos los datos que se encuentren en el archivo 1 y también en el archivo 2, se guarden en el archivo 4. (Aquí me equivoqué yo y viéndolo ahora podrían ser sólo tres archivos, pero me funciona igual como está).
File_2=1.txt
File_3=2.txt
File_4=Resultados\1+2.txt Archivo que guarda las coincidencias de File_2 y File3. En una subcarpeta por ejemplo llamada Resultados.

Al terminar los dos primeros archivos, continúe de la siguiente forma hasta terminar los 67 archivos.

File_1=2.txt
File_2=2.txt
File_3=3.txt
File_4=Resultados\2+3.txt

File_1=3.txt
File_2=3.txt
File_3=4.txt
File_4=Resultados\3+4.txt…. hasta

File_1=66.txt
File_2=66.txt
File_3=67.txt
File_4=Resultados\66+67.txt

Y eso sería todo, si he conseguido explicarlo bien jejeje…

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 15
Ha aumentado 1 puesto en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Necesito un pequeño programita, a ser posible en BAT. (20 €)

Publicado por Marcos (7 intervenciones) el 20/12/2019 11:33:57
Se me olvidaba, ahora probándolo más a fondo, me he dado cuenta que si hay textos repetidos en los archivos los guarda también en el archivo resultados, podría evitarse que no guarde duplicados, que si ya está guardado no lo vuelva a guardar. Gracias!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Necesito un pequeño programita, a ser posible en BAT. (20 €)

Publicado por Antoni Masana (811 intervenciones) el 20/12/2019 14:20:41
Viendo la explicación de los ficheros que intervienen se me ha colapsado las neuronas, vale que me acababa de despertar y que a veces cometemos obviedades al explicar algo, yo el primero.

Si lees del fichero 1.txt no tiene sentido mirar si existe el texto leído en el mismo fichero de donde lo has leido.

Haber si esto funciona y es lo que necesitas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
@echo off
 
set Dir_Orig=C:\Tmp
set Dir Dest=C:\Tmp\Resultado
 
FOR /L %%n in (1, 1, 66) do call :Procesa %%n
 
:Procesa
    if "%1" == "" goto :EOF
 
    set    Num_1=%1
    set /A Num_2=%1+1
 
    set File_1=%Dir_Orig%\%Num_1%.txt
    set File_2=%Dir_Orig%\%Num_2%.txt
    set File_3=%Dir_Orig%\%Num_1%-%Num_2%.txt
    set File_4=%Dir_Orig%\%Num_1%-%Num_2%.txt
 
    If Not Exist %File_1% goto Falta_1
    If Not Exist %File_1% goto Falta_2
 
    Type Nul >%File_4%
    FOR /F "delims=*" %%a in (%File_1%) do Call :Buscar "%%a"
    goto :EOF
 
:Falta_1
    echo ERROR - No existe el fichero: %File_1%
    goto :EOF
 
:Falta_2
    echo ERROR - No existe el fichero: %File_2%
    goto :EOF
 
:Buscar
    set Texto=%1
 
    Find %Texto% %File_2% >nul 2>&1
    set Esta_2=%ErrorLevel%
 
    Find %Texto% %File_3% >nul 2>&1
    set Esta_3=%ErrorLevel%
 
    IF %Esta_2% == 1 goto :EOF
    IF %Esta_3% == 1 goto :EOF
    set Texto=%Texto:~1,-1%
    echo %Texto% >>%File_4%
    goto :EOF

Solo debes modificar las dos rutas del principio del BAT


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 15
Ha aumentado 1 puesto en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Necesito un pequeño programita, a ser posible en BAT. (20 €)

Publicado por Marcos (7 intervenciones) el 20/12/2019 14:41:34
Si, disculpe mi ignorancia también a la hora de plantearlo.

Lo he probado y me crea los archivos 1-2.txt, etc. pero vacíos no me guarda ningún dato dentro, lo he probado con pequeños datos que se que se repiten en ambos archivos para asegurarme. Gracias.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Necesito un pequeño programita, a ser posible en BAT. (20 €)

Publicado por Antoni Masana (811 intervenciones) el 20/12/2019 19:19:59
Enviame un puñado de estos archivos para que lo pruebe.

Pero antes prueba este cambio:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
@echo off
 
set Dir_Orig=C:\Tmp
set Dir Dest=C:\Tmp\Resultado
 
FOR /L %%n in (1, 1, 66) do call :Procesa %%n
 
:Procesa
    if "%1" == "" goto :EOF
 
    set    Num_1=%1
    set /A Num_2=%1+1
 
    set File_1=%Dir_Orig%\%Num_1%.txt
    set File_2=%Dir_Orig%\%Num_2%.txt
    set File_3=%Dir_Orig%\%Num_1%-%Num_2%.txt
    set File_4=%Dir_Orig%\%Num_1%-%Num_2%.txt
 
    If Not Exist %File_1% goto Falta_1
    If Not Exist %File_1% goto Falta_2
 
    Type Nul >%File_4%
    FOR /F "delims=*" %%a in (%File_1%) do Call :Buscar "%%a"
    goto :EOF
 
:Falta_1
    echo ERROR - No existe el fichero: %File_1%
    goto :EOF
 
:Falta_2
    echo ERROR - No existe el fichero: %File_2%
    goto :EOF
 
:Buscar
    set Texto=%1
 
    Find %Texto% %File_2% >nul 2>&1
    set Esta_2=%ErrorLevel%
 
    Find %Texto% %File_3% >nul 2>&1
    set Esta_3=%ErrorLevel%
 
    IF %Esta_2% == 1 goto :EOF
    IF %Esta_3% == 0 goto :EOF
    set Texto=%Texto:~1,-1%
    echo %Texto% >>%File_4%
    goto :EOF

Ha de existir en el File_2 y NO ha de existir en el File_3.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 15
Ha aumentado 1 puesto en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Necesito un pequeño programita, a ser posible en BAT. (20 €)

Publicado por Marcos (7 intervenciones) el 20/12/2019 20:10:08
Ahora si funciona, he hecho algunas modificaciones de guiones bajos que faltaban en Dir_Dest y file3 y 4 y ya está, pero no muestra los números de archivos que se están usando.

Le paso 3 archivos TXT que uso de prueba, aunque al ser mucha información va muy lento.

Muchas gracias por la implicación en ayudarme y por el esfuerzo, facilíeme su correo paypal para hacerle el ingreso cuando pueda.

Un saludo.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
@echo off
 
set Dir_Orig=Datos
set Dir_Dest=Datos\Resultado
 
FOR /L %%n in (1, 1, 2) do call :Procesa %%n
 
:Procesa
    if "%1" == "" goto :EOF
 
    set    Num_1=%1
    set /A Num_2=%1+1
 
    set File_1=%Dir_Orig%\%Num_1%.txt
    set File_2=%Dir_Orig%\%Num_2%.txt
    set File_3=%Dir_Dest%\%Num_1%-%Num_2%.txt
 
    If Not Exist %File_1% goto Falta_1
    If Not Exist %File_1% goto Falta_2
 
    Type Nul >%File_3%
    FOR /F "delims=*" %%a in (%File_1%) do Call :Buscar "%%a"
    goto :EOF
 
:Falta_1
    echo ERROR - No existe el fichero: %File_1%
    goto :EOF
 
:Falta_2
    echo ERROR - No existe el fichero: %File_2%
    goto :EOF
 
:Buscar
    set Texto=%1
 
    Find %Texto% %File_2% >nul 2>&1
    set Esta_2=%ErrorLevel%
 
    Find %Texto% %File_3% >nul 2>&1
    set Esta_3=%ErrorLevel%
 
    IF %Esta_2% == 1 goto :EOF
    IF %Esta_3% == 0 goto :EOF
    set Texto=%Texto:~1,-1%
    echo %Texto% >> %File_3%
    goto :EOF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Necesito un pequeño programita, a ser posible en BAT. (20 €)

Publicado por Antoni Masana (811 intervenciones) el 20/12/2019 20:54:53
Si te pasas por Barcelona quedamos para tomar unas cervezas.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 15
Ha aumentado 1 puesto en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Necesito un pequeño programita, a ser posible en BAT. (20 €)

Publicado por Marcos (7 intervenciones) el 20/12/2019 21:11:37
Pues muy agradecido por tu ayuda y dedicarme tiempo a ayudarme... La vida siempre compensa de una forma u otra.... Muchas gracias!!!

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar