Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - cassiel83

#11
Lo he probado pero sigue igual, leí que el código inicial que me diste sirve para forzar al windows a realizar tareas que solo haría cuando el ordenador esta ocioso y que no tiene nada que ver con liberar memoria. He intentado quitar el bucle que une los exi_dat en el archivo final y reemplazarlo por concatenar directamente y mejora un poco (puedo ejecutar el programa mas veces) pero aparece el problema del símbolo del cuadrado al unir dos txt.
Dado que trae tantos problemas y el MS DOS es tan limitado intentare hacerlo en C++ a partir de ahora.
Saludos y gracias.
#12
Hola voy a probar el código aunque no entiendo para que sirve el "|MORE", ¿mostrar pantalla a pantalla?, bueno veré que tal me va gracias
#13
Scripting / Re: . bat que une varios txt
21 Marzo 2012, 20:13 PM
Hola nuevamente como habias dicho lo he probado en windows 7 y si que funciona, los archivos son UTF8 y el archivo resultante es tambien UTF8 parece ser que en windows xp no funciona.
#14
Scripting / Re: . bat que une varios txt
20 Marzo 2012, 20:11 PM
Hola Elektro Hacker, gracias por contestar, estoy probando el comando en xp sp3, de hecho lo he vuelto a hacer con archivos pequeños que acabo de crear y los guardo en formato UTF8, el archivo resultante es tambien un UTF8 pero sigue el problema del simbolo cuadrado en la union de los archivos. Probare esta noche en casa ya que en la oficina no tenemos windows 7.
#15
Scripting / Re: . bat que une varios txt
20 Marzo 2012, 17:44 PM
Hola a todos, el copy /b funciona para archivos .txt con formato ANSI pero cuando son UTF8 el símbolo del cuadrado sigue apareciendo en medio de la unión de los dos txt.
He intendado usando el Copy /A (ascii) pero tampoco funciona, alguna idea para solucionarlo usando archivos UTF8?
Gracias de antemano.
#16
Buenas tardes a todos, tengo un código en .bat que me crea una base de datos en formato xml.
El programa lee de un txt el listado (que consta de 10 campos separados por ";") de todos los archivos que deberían estar físicamente en el ordenador, va construyendo la base de datos con los archivos encontrados.
La base de datos que se genera al final consta de dos partes que uno al final.
El programa funciona al ejecutarlo la primera vez, pero cuando se ejecuta por segunda vez funciona por un momento y luego el ordenador muestra el mensaje de error: "windows no pudo guardar los datos en myarchivo, se perdieron los datos la posible causa de este error puede ser un error de hardware... intente guardar el archivo en otro sitio"
El ordenador se pone lento y las ventanas se muestran incompletas, se cuelga y tengo que desconectarlo para que se apague.
Creo que el problema podría ser que mi programa consume mucha memoria del sistema ya que si el listado txt es mas pequeño de alrededor de 1,000 lineas (y no como el primero de 30,000) el programa funciona bien, ademas si lo ejecuto con el listado grande, luego reinicio el ordenador y lo vuelvo a ejecutar, no da ningún fallo, también lo he ejecutado en otras maquina y siempre pasa lo mismo.
He estado viendo por allí un scrip para liberar memoria pero no me ha servido.
Por eso agradecería la ayuda de alguien que tenga experiencia con programas en .bat y de como gestiona la memoria, si al terminar un programa hay que liberar la memoria manualmente, aunque yo creo que eso debería gestionarlo el propio windows.

el código en cuestión es este:

Código (dos) [Seleccionar]
;echo off
SETLOCAL  ENABLEDELAYEDEXPANSION

set /A conta=0
set /A contb=0

echo a;^<?linea de cabecera?^>a; >> exi1_dat.txt

echo Reporte de creacion de BD > repo_bd.txt
echo. >> repo_bd.txt
echo Fecha y hora: %date% %time% >> repo_bd.txt
echo. >> repo_bd.txt

for /F "tokens=1-10 delims=;" %%a in (dat.txt) do (
if exist %%a (

set /A conta=!conta!+1
set aut=%%b
set tit=%%c

echo a; ^<primer dato="%%a"^>;a >> exi1_dat.txt
echo a;  ^<cuarto a octavo dato=%%d %%e %%f %%g %%h /^>;a >> exi1_dat.txt
echo a;  ^<decimo dato^> %%j ^<^>;a >> exi1_dat.txt
echo a;  ^<noveno dato %%i /^>;a >> exi1_dat.txt
echo a;  ^<otro dato primero=%%a /^>;a >> exi2_dat.txt
) else (
echo %%a >> repo1_bd.txt
set /A contb=!contb!+1
)
)

echo a; ^<linea final^>;a >> exi2_dat.txt

REM uniendo en uni.txt

for /F "tokens=1-3 delims=;" %%a in (exi1_dat.txt) do (
REM echo %%b
echo %%b>> uni.txt
)

for /F "tokens=1-3 delims=;" %%a in (exi2_dat.txt) do (
REM echo %%b
echo %%b>> uni.txt
)

ren uni.txt "Base de datos.xml"

del exi*.txt

echo. >> repo_bd.txt
echo Numero de registros en BD:         !conta! >> repo_bd.txt
echo. >> repo_bd.txt
echo Numero de registros eliminados:    !contb! >> repo_bd.txt
echo. >> repo_bd.txt
echo registros eliminados: >> repo_bd.txt

copy repo_bd.txt + repo1_bd.txt reporte_bd.txt

echo.>> reporte_bd.txt
echo Fin del reporte >> reporte_bd.txt

del repo_bd.txt
del repo1_bd.txt

ENDLOCAL
pause



Gracias de antemano.