Autor
|
Tema: Acciones sobre archivos de texto. [Batch] (Leído 445,138 veces)
|
ovpaez
Desconectado
Mensajes: 8
|
ok.. en el archivo de texto tengo la palabra usuario la cual se va a reemplazar dinamicamente con lo q traiga una variable... ya q plantilla.inf es mi archivo plano es una plantilla .. alli coloque usu en vez de la variable (pero es un ejemplo).. pero el codigo que te coloque hace el reemplazo de la variable perfectamente.. alli no tengo problemas.. pero necesito seguir ejecutando instrucciones.. pero primero necesito reemplazar ese archivo completamente y luego ejecutar ese archivo que estoy reemplazando ya que es una plantilla de politica se seguridad de windows... obvio todo dentro del mismo Script... Espero me haya sabido explicar...
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
¿Y el contenido del archivo? ¿Como se yo donde debo reemplazar?... para eso es el contenido del archivo.
|
|
|
En línea
|
|
|
|
ovpaez
Desconectado
Mensajes: 8
|
[Unicode] Unicode=yes [Version] signature="$CHICAGO$" Revision= [Event Audit] [Registry Values] MACHINE\SOFTWARE\policies\Microsoft\windows NT\DCOM\MachineAccessRestriction=1,"O:BAG:BAD:(A;;CCDC;;;AN)(A;;CCDCLC;;;WD)(A;;CCDCLC;;;usuario)" MACHINE\SOFTWARE\policies\Microsoft\windows NT\DCOM\MachineLaunchRestriction=1,"O:BAG:BAD:(A;;CCDC;;;AN)(A;;CCDCLC;;;WD)(A;;CCDCLC;;;usuario)" [Privilege Rights] SeSecurityPrivilege = *usuario [File Security] "%SystemDrive%\DOCS",0,"D:PAR(A;OICI;FA;;;BA)(A;OICIIO;FA;;;CO)(A;OICI;0x1301bf;;;usuario)(A;OICI;FA;;;SY)(A;OICI;0x1200a9;;;BU)"
Ese es el archivo a reemplazar.. y la palabra usuario es la q se va a reemplazar por usu como te puse el codigo anteriormente... pero despues de reemplazar... desde del eof se cierra y no ejecuta otra instruccion la solucion fue hacer dos .bat pero es demasiado ineficiente se q se puede hacer en el mismo script eso creo!!?????
|
|
« Última modificación: 2 Septiembre 2009, 04:23 am por Leo Gutierrez. »
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Mira, si es que he entendido lo que quieres hacer, pues es fácil. Lo explicaré: Suponiendo que queremos cambiar una linea en el archivo "file.txt" (Esto lo modificas a tu gusto): C:\>type "FILE.TXT" [Unicode] Unicode=yes [Version] signature="$CHICAGO$" Revision= [Event Audit] [Registry Values] MACHINE\SOFTWARE\policies\Microsoft\windows NT\DCOM\MachineAccessRestriction=1," O:BAG:BAD:(A;;CCDC;;;AN)(A;;CCDCLC;;;WD)(A;;CCDCLC;;;usuario)" MACHINE\SOFTWARE\policies\Microsoft\windows NT\DCOM\MachineLaunchRestriction=1," O:BAG:BAD:(A;;CCDC;;;AN)(A;;CCDCLC;;;WD)(A;;CCDCLC;;;usuario)" [Privilege Rights] SeSecurityPrivilege = Este es mi texto [File Security] "%SystemDrive%\DOCS",0,"D:PAR(A;OICI;FA;;;BA)(A;OICIIO;FA;;;CO)(A;OICI;0x1301bf; ;;usuario)(A;OICI;FA;;;SY)(A;OICI;0x1200a9;;;BU)"
C:\> Ejecutamos este codigo: for /f "tokens=1 delims=:" %%_ in ('type "file.txt" ^| findstr /r /n " ^SeSecurityPrivilege"' ) do ( ) echo No hay coincidencia. echo El programa cerrara ahora. ) set "contenido=Este es mi texto" // Esto es por lo que se cambiara echo Linea a editar : %linea% echo Se editara por : SeSecurityPrivilege = %contenido% ( echo SeSecurityPrivilege = %contenido% ) | edlin /b file.txt > nul 2 >&1 type "file.txt"
El codigo buscara la linea a editar y la cambiara por esto: echo SeSecurityPrivilege = %contenido%
Despues de ejecutar el codigo: C:\>code.bat Linea a editar : 11 Se editara por : SeSecurityPrivilege = Este es mi texto [Unicode] Unicode=yes [Version] signature="$CHICAGO$" Revision= [Event Audit] [Registry Values] MACHINE\SOFTWARE\policies\Microsoft\windows NT\DCOM\MachineAccessRestriction=1," O:BAG:BAD:(A;;CCDC;;;AN)(A;;CCDCLC;;;WD)(A;;CCDCLC;;;usuario)" MACHINE\SOFTWARE\policies\Microsoft\windows NT\DCOM\MachineLaunchRestriction=1," O:BAG:BAD:(A;;CCDC;;;AN)(A;;CCDCLC;;;WD)(A;;CCDCLC;;;usuario)" [Privilege Rights] SeSecurityPrivilege = Este es mi texto [File Security] "%SystemDrive%\DOCS",0,"D:PAR(A;OICI;FA;;;BA)(A;OICIIO;FA;;;CO)(A;OICI;0x1301bf; ;;usuario)(A;OICI;FA;;;SY)(A;OICI;0x1200a9;;;BU)"
C:\> Saludos.
|
|
|
En línea
|
|
|
|
ovpaez
Desconectado
Mensajes: 8
|
Q pena Bueno Creo que entendi el codigo que me diste.. Peroooo si te diste cuenta en el archivo hay varios sitios donde se encuentra la palabra usuario... Y lo de reemplazar las palabras que quiero en el archivo de texto ya eso lo programe este es el codigo if %1'==' (set p1=usuario for /f "tokens=1,* delims=]" %%A in ('"type %p3%|find /n /v """' ) do ( ) type $>%p3% type %p3% :stng
Ese codigo me reemplaza en el archivos todas las palabras usuario por usu, por el SID o variable que yo desee... Ese codigo va dentro de un bat donde se encuentran otras instrucciones... if %1'==' (set p1=usuario set p2=%varusuario% set p3=Plantilla.inf) else (set p1=%1&& set p2=%2&& set p3=%3) echo.>$ for /f "tokens=1,* delims=]" %%A in ('"type %p3%|find /n /v """') do ( set "current=%%B" if defined current ( call :stng %p1% %p2% ) else echo.>>$ ) type $>%p3% type %p3% :stng call set current=%%current:%1=%2%% echo %current%>>$
goto : EOF
secedit /configure /cfg plantilla.inf /db secsetup.sdb /verbose :: ------- Firewall----- netsh.exe firewall set service type=REMOTEADMIN mode=ENABLE scope=ALL netsh.exe firewall show state
echo Configure los permisos del WMI con el usuario %filecontent% y luego presione Enter pause
net stop winmgmt net start winmgmt
Shutdown -r -t 00
Este es el bat Como ya te he dicho lo hace todo pero hasta el eof ya la siguientes instrucciones no las realiza... y necesito q se ejecute todo y todo se debe realizar en un Script para darle click y ya
|
|
« Última modificación: 14 Marzo 2011, 22:49 pm por Leo Gutiérrez. »
|
En línea
|
|
|
|
ovpaez
Desconectado
Mensajes: 8
|
Se cerro el tema ???
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
No, claro que no, solo se olvido tu duda.
Una pregunta, ¿aceptarías una solución en Perl?, por que no tengo acceso a sistemas con Windows.
|
|
|
En línea
|
|
|
|
danibcn
Desconectado
Mensajes: 1
|
Buenos tardes! Me gustaría saber como ejecutar un bat o si hay un programa ya para modificar unos archivos de texto para eliminar ciertas palabras o lineas y que te lo guarde sin crear archivos a parte. por ejemplo tengo 100 txt y en todos quiero eliminar la palabra 'señor', reemplazar 'río' por 'lago' y cuando encuentre 'mar' eliminar desde 'mar' hasta la última linea o poder eliminar 6 ultimas lineas Quien me puede echar una mano?
|
|
|
En línea
|
|
|
|
0x0309
Desconectado
Mensajes: 215
|
mira, lo mejor es que utilices un programa que te haga el trabajo, y simplemente lo llamas con parámetros. Hay uno muy bueno que se llama gsar.exe http://gnuwin32.sourceforge.net/packages/gsar.htm Esta es su ayuda: gsar, ver 1.21 -- Copyright (C) 1992-2008 Tormod Tjaberg & Hans Peter Verne
Usage: gsar [options] [infile(s)] [outfile] Options are: -s<string> Search string -r[string] Replace string. Use '-r' to delete the search string from the file -i Ignore case difference when comparing strings -B just display search & replace Buffers -f Force overwrite of an existing output file -o Overwrite the existing input file -c[n] show textual Context of match, 'n' is number of bytes in context -x[n] show context as a heX dump, 'n' is number of bytes in context -b display Byte offsets of matches in file -l only List filespec and number of matches (default) -h suppress display of filespec when displaying context or offsets -du convert a DOS ASCII file to UNIX (strips carriage return) -ud convert a UNIX ASCII file to DOS (adds carriage return) -F 'Filter' mode, input from stdin and eventual output to stdout -G display the GNU General Public Licence
Ctrl characters may be entered by using a ':' in the string followed by the ASCII value of the character. The value is entered using ':' followed by three decimal digits or ':x' followed by two hex numbers. To enter ':' use '::'
Por ejemplo yo tengo el siguiente script para modificar rápidamente el boot.ini y activar dep para todos los programas y servicios. Esto normalmente, se hace yendo a Propiedades de pc ... y varios clics. En cambio yo automaticé el proceso. Activar dep para todos los programas es para aumentar la seguridad del equipo y que no te vulneren el sistema operativo con drivers. @echo off reg.exe delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /f >nul 2>&1 (set file=%SystemDrive%\boot.ini) attrib.exe -a -s -h -r "%file%" >nul 2>&1 gsar.exe -i -o -sNoExecute=OptIn -rNoExecute=OptOut "%file%" >nul 2>&1 if not errorlevel 1 ( reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\NoExecuteState" /v LastNoExecuteRadioButtonState /t REG_DWORD /d 13013 /f >nul 2>&1 ) attrib.exe +a +s +h +r "%file%" >nul 2>&1
Lo que hace mi código es reemplazar en el boot.ini: NoExecute=OptIn por NoExecute=OptOut Si es que existe el texto OptIn, sino devuelve errorlevel 1 que significa que no reemplazo nada porque no encontró el texto de entrada en el archivo. Yo te recomiendo este programa porque lo he probado y funciona bien.
|
|
|
En línea
|
|
|
|
P3YOX
Desconectado
Mensajes: 1
|
BUENAS Soy bastante novato En esto del batch pero copiando y pagando analisando he conseguido resultados pero aún asi no me alcansa la suerte es por eso que necesito tu ayuda ^^ tengo un batch pesca un archivo de texto y lo ingresa a una variante y ese contenido lo transformo sin ningun problema EL PROBLEMA SE PRODUCE que no puedo encontrar un codigo queme tome todo el contenido del texto y me lo ingrese a mi variante solo conseguí uno que me tome la primera linea no todo el contenido del txt esto es lo que tengo echo. for /f %%a in (nuevo.txt) do ( set var=%%a goto next) :next echo %var:~0% set var=%var:~0% etc etc... Y tambien la posivilidad d eke me intregre varios archivos de texto con nombrs en comun ala variante como por ejemplo un *00.txt de antemanos gracias
|
|
« Última modificación: 29 Octubre 2009, 04:38 am por P3YOX »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Modificar archivos de texto [batch] [Perl]
« 1 2 »
Scripting
|
bjeli1980
|
10
|
13,751
|
17 Mayo 2010, 09:07 am
por bjeli1980
|
|
|
[BATCH] Ayuda guardando archivos de texto a php
Scripting
|
Geormarsch
|
2
|
4,359
|
20 Septiembre 2011, 16:33 pm
por Poderoscuro1207
|
|
|
[BATCH] [APORTE] Rutina TEXTMAN para manipular archivos de texto
Scripting
|
Eleкtro
|
2
|
8,099
|
15 Marzo 2014, 15:17 pm
por FranciskoAsdf
|
|
|
Como puedo arrastrar y concatenar archivos de texto en un BATCH
Scripting
|
PUCH84
|
6
|
10,021
|
28 Abril 2014, 09:49 am
por PUCH84
|
|
|
Ayuda con batch para crear archivos de texto plano
Scripting
|
seu230
|
6
|
3,124
|
5 Octubre 2018, 10:28 am
por seu230
|
|