Ms-Dos - Ejecutar .bat en varios archivos

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

Ejecutar .bat en varios archivos

Publicado por Yusniel (12 intervenciones) el 13/06/2020 17:48:25
Tengo este codigo:

1
2
3
4
5
@echo off
Copy archivodetexto.txt %temp%
Echo Esta documentacion ha sido veridicada por el administrador>archivodetexto.txt
Type %temp%\archivodetexto.txt>>archivodetexto.txt
Del %temp%\archivodetexto.txt

Logre que me copiara un archivo hacia la carpeta temporal, acto seguido me insertara el texto "Esta documentacion ha sido veridicada por el administrador" y detras me pusiera el texto que habia antes(fue la unica forma que encontre para insertar mi texto en la primera linea) y borrar el archivo temporal. Por ahi todo me funciona bien, solo que necesito hacerlo para todos los .txt de la carpeta donde lo ejecuto o si es posible hacerlo en el directorio actual y todos sus subdirectorios, he probado en vez de poner el nombre poner *.txt de varias formas y no me funciona, intente con el comando for, pero no di bien con el tema, alguien podria ayudarme? Muchas gracias de antemano
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

Ejecutar .bat en varios archivos

Publicado por Antoni Masana (812 intervenciones) el 14/06/2020 09:31:38
Esto recorre el directorio actual y todos los sub-directorios de primer nivel, buscando ficheros TXT y añade el texto al final del fichero si no existe.
Si lo ejecutas varias veces no duplica el texto.

1
2
3
4
5
6
7
8
9
10
@echo off
set Text=Esta documentacion ha sido veridicada por el administrador
set Home=%CD%
 
for /D %%a in (. *) do (
    for %%b in (*.txt) do (
        find "%Texto%" %Home%\%%a\%%b
        if %ErrorLevel% EQU 1 echo%texto%>>%Home%\%%a\%%b
    )
)

Crea un pequeño entorno para probar el proceso. Yo no lo he probado.

Saludos.
\\//_

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
sin imagen de perfil
Val: 31
Ha disminuido 1 puesto en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Ejecutar .bat en varios archivos

Publicado por Yusniel (12 intervenciones) el 14/06/2020 20:20:36
Ya le probe y no me funciono, dande un poco de dedos en el .bat he dado con una variante, ahora solo necesito crear una condicion donde si hay un txt enladireccionqueponga entonces ejecute comando type cada txt con mismo nombre, podrias darme una luz sobre ese tema?
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: 31
Ha disminuido 1 puesto en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Ejecutar .bat en varios archivos

Publicado por Yusniel (12 intervenciones) el 14/06/2020 20:56:10
Lo que quisiera seria esto

@echo off

set text=Esta documentacion ha sido verificada por el administrador

For %%a in (*.txt) do (copy %%a %temp%)
For %%a in (*.txt) do (echo %text%>%%a)

If %temp%\%a%==%a% ( type temp%\%a%>>%a%)

Es la condicion hacerla que si ve un archivo con el mismo nombre me ejecute el comando type del archivo en la carpeta %temp% sobre el que se ejecuta, muchas gracias por adelantado y disculpen la molestia que les pueda ocasionar
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

Ejecutar .bat en varios archivos

Publicado por Antoni Masana (812 intervenciones) el 15/06/2020 14:29:12
Ahora he deducido que es lo que quieres hacer.
Con lo fácil que resulta explicar que el texto que añades tiene que ir al principio del archivo y no al final nos hubiese ahorrado muchas molestias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off
set Text=Esta documentacion ha sido veridicada por el administrador
set Home=%CD%
 
for /D %%a in (. *) do (
    for %%b in (*.txt) do (
        find "%Text%" %Home%\%%a\%%b
        if %ErrorLevel% EQU 1 (
            copy %Home%\%%a\%%b %Temp%\%%b
            echo %Text%        >%Home%\%%a\%%b
            type %Temp%\%%b   >>%Home%\%%a\%%b
            del  %Temp%\%%b
    )
)

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
sin imagen de perfil
Val: 31
Ha disminuido 1 puesto en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Ejecutar .bat en varios archivos

Publicado por Yusniel (12 intervenciones) el 15/06/2020 17:49:02
Disculpa no haberme expresado bien a lo que queria lograr. El codigo no me funciono, no se si sera que uso Windows 10, pero no me deja tener juntas tantas sentencias, solo me deja hacerlas de una en una, gracias al su aporte Antoni puede lograr lo deseado, algo de piedra pero lo logre, aqui senlo dejo para quien lo necesite

1
2
3
4
5
6
7
8
9
10
@echo off
Set text= esta documentacion ha sido verificada por el administrador
 
For %%b in (*.txt) do (copy %%b %temp%)
 
For %%b in (*.txt) do (echo %text%>%b%)
 
For %%b in (*.txt) do (type %temp%\%%b>>%%b)
 
Del %temp%\*.txt

Queda aclarar que se agregara el texto definido en todos los txt de la carpeta donde se ejecute y se repitira si ya se tenia antes

Muchas gracias a antoni y su paciencia por ayudarme
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