Bytes libres en unidad desde fichero bat

En ocasiones al hacer copias largas desde un BAT sobre un HD no puedo por sobrepasar la capacidad del HD destino y desconozco el resultado final.

Desearía condicionar la copia si el total de ficheros caben en una unidad. Para ello debo saber: primero tamaño total de los ficheros que deseo copiar y segundo la capacidad del destino para albergar esos ficheros.

No soy experto en instrucciones para BAT

Agradecería cualquier ayuda

Quizás esté resuelto en alguna respuesta que desconozco.

Gracias anticipadas por vuestra EXPERTA atención.

Jorge

[email protected]

Respuesta
1

Supongo que la respuesta puede depender de la forma en que hagas la copia, pero me he planteado como calcular la ocupación total de los archivos relacionados en un archivo (que se pasa como segundo parámetro en la llamada) y compararla con los bytes libres en una unidad (que se pasa como primer parámetro). Este sería el BAT:

@echo off
Setlocal EnableDelayedExpansion
if "%1" == "" goto :ayuda
if not exist "%2" goto :ayuda
dir %1 >nul 2>&1 ||goto :ayuda
set /a total=0
for /f "tokens=3,*" %%a in ('dir /-C %1 ^| find "bytes libres"') do set /a libres=%%a
for /f "tokens=* delims=" %%a in ('type "%2"') do for /f "tokens=3,*" %%k in ('dir /-C "%%a" ^| find "%%~nxa"') do set /a total+=%%k
if !total! leq %libres% echo Se pueden copiar. Total: !total! Libres en %1 %libres%
goto :fin
:Ayuda
Echo Comprueba si los archivos a copiar caben en el destino
echo Formato: %0 destino lista
echo Ejemplo:
echo %0 a: lista.txt
:Fin

Mira a ver si te sirve así o hay que hacer algún retoque.

¡Gracias! amigo por tu pronta respuesta

Profesional donde los haya.

Probaré tu consejo y te digo.

Bien.

He probado tu propuesta pero no se donde indicarle el disco sobre el que deseo averiguar la información ni donde deja la información obtenida.

Hice mis pinitos con el siguiente BAT copiado de otros BATs encontrados

DIR E: >D:\BYTESe.TXT
for /f "delims=" %%a in (D:\BYTESe.TXT) do SET jgDG=%%a
SET BYTESLIBRESe=%jgDG:~-30,17%

Creo que funciona pero si resultado en BYTESLIBRESe es por ejemplo 631.624.843

y en otro disco consultado el contenido tiene una longitud distinta por. ej   9.345.827.378.

El problema es que el resultado siempre es de longitud variable según la cifra resultante y no me permite operar con el resultado en una variable que tuviera por. ej. 17 bytes de longitud fija y pusiera los resultados siempre a la derecha rellenando con blancos hasta el principio para completar los 17 bytes de longitud del campo receptor de la información.

Y lo ideal sería saber la capacidad total del disco en bytes y los bytes finalmente libres, pero a eso ya no llego.

Ya que ni siquiera  usando set /a xxx y sumar los dos contenidos me dice que falta un operador.

El operar con BATs me parece apasionante, pero hay que dominar los comandos.

Porfi dime donde pongo los datos origen y destino sobre tu propuesta

En cualquier caso, gracias de nuevo.

Un saludo

Jorge

Si ejecutas el bat sin más te dice como se usa y te pone un ejemplo.

Digamos que en lista.txt tienes la lista de los archivos que quieres copiar (con el path completo, si fuera necesario), la unidad destino fuera la g: y al bat le has llamado COMPCAPA.BAT. Tendrías que utilizarlo de esta forma:

COMPCAPA g: lista.txt

Buenos días amigo gggirald

He probado tu indicación y me dice en Windows 10

Se alcanzó el máximo nivel de recursividad de setclocal

Aunque creo que resolviendo lo que indico a continuación resuelvo mis inquietudes

Abusando de tu experiencia me permito plantear el problema que tengo desde un fichero BAT para DOS con Windows 10

Dispongo de varias variables %VAR1% %VAR2% %VAR3% …. con un contenido de longitud variable que puede ser numérico o alfanumérico o incluso con contenidos de ceros a la izquierda o blancos a la izquierda o al final.

Las comillas delimitadoras en los ejemplos no existen en la realidad, sirven sólo para mostrar en estos ejemplos donde empieza y acaba el contenido de cada variable o al principio y final del campo receptor.

Ejemplo de contenidos en las variables:

“2764”

“    3864”

“000006392”

“3.678.432”

“              CONTENT”          (que supera los 15 bytes, debe perderse lo superior por la izquierda)

“Hecho ”

“en el día”

Y por otra parte tengo varios campos receptores BOX1 BOX2 BOX3 …. que tienen un tamaño fijo de 15 bytes de longitud.

Deseo colocar sea cual sea el contenido de las variables %VAR1% %VAR2% … etc. en los campos receptores BOX1 BOX2 …… etc. Colocando blancos a la izquierda con los siguientes resultados para poder explotar sus datos en otros procesos.

Durante otros procesos yo determino la %VARx% en que contenido BOXx se almacena.

“             2764”

“             3864”

 “  000006392”

 “    3.678.432”

“    CONTENT”

“          Hecho ”

“        en el día”

El problema se resume en situar a la derecha de un campo receptor cualquier contenido procedente de una variable.

O quizás puedes ilustrarme donde encontrar mayor información para usar las instrucciones operativas de DOS, para un inexperto con yo.

Gracias anticipadas por tu atención

Jorge

Respecto a lo que me dices de Windows10 no acabo de entenderlo. Yo también lo he probado en Windows10, y esto es lo que me sale (y de paso te muestro toda la información relacionada: versión de Windows, contenido del bat, contenido de la lista de prueba, llamada al bat y resultado):

C:\Users\g\Documents\BAT>ver
Microsoft Windows [Versión 10.0.17134.112]
C:\Users\g\Documents\BAT>type jorgepe.bat
@echo off
Setlocal EnableDelayedExpansion
if "%1" == "" goto :ayuda
if not exist "%2" goto :ayuda
dir %1 >nul 2>&1 ||goto :ayuda
set /a total=0
for /f "tokens=3,*" %%a in ('dir /-C %1 ^| find "bytes libres"') do set /a libre
for /f "tokens=* delims=" %%a in ('type "%2"') do for /f "tokens=3,*" %%k in ('d
 "%%~nxa"') do set /a total+=%%k
if !total! leq %libres% echo Se pueden copiar. Total: !total! Libres en %1 %libr
goto :fin
:ayuda
Echo Comprueba si los archivos a copiar caben en el destino
echo Formato: %0 destino lista
echo Ejemplo:
echo %0 a: lista.txt
:fin
C:\Users\g\Documents\BAT>type lista.txt
C:\Users\g\Documents\BAT\2T3ZFREV9HW384950.xml
C:\Users\g\Documents\BAT\afg.bat
C:\Users\g\Documents\BAT\alvaro.bat
C:\Program Files\Ultimaker Cura 3.0\CuraEngine.exe
C:\Program Files\Ultimaker Cura 3.0\numpy.linalg._umath_linalg.pyd
C:\Users\g\Documents\BAT>jorgepe g: lista.txt
Se pueden copiar. Total: 4080824 Libres en g: 818159616
C:\Users\g\Documents\BAT>

Copiado directamente de la ventana CMD.

A lo mejor estás invocando al bat desde otro bat que ya tiene el comando "Setlocal EnableDelayedExpansion" o algo así.

Respecto a lo segundo que me planteas voy a intentar resumirlo a ver si lo he entendido bien:

1. Tienes varias variables literales de longitud variable (valga la redundancia) de las que solo quieres tomar como máximo los primeros 15 caracteres. Por tanto la parte útil de esas variables puede contener desde 1 a 15 caracteres.

2. El contenido de esas variables lo quieres guardar en otras variables forzando a que la longitud sea de 15 caracteres (a mi me salen 10 u 11 pero asumo que son 15 porque si no es así no acabo de entender el comentario respecto a los 15 bytes) para lo que insertaremos espacios en blanco por la izquierda si fuera necesario.

3. A modo de ejemplo podríamos partir de un archivo con los primeros literales y obtener otro con las conversiones.

Ya me dirás.

Saludos de nuevo gggirald

Sigo probando tu propuesta, pero debo hacer algo mal. Pero sigo intentándolo.

No he duplicado El inicio @echo off  Setlocal.....

En cuanto a mi otra solicitud de ayuda

Se trata de poder situar en una variable destino BOX1, con una longitud fija de 15 bytes. Colocando su contenido a la derecha en la variable receptora BOX1, rellenando en su caso por su parte izquierda con blancos hasta completar los espacios no ocupados por la izquierda, hasta completar los 15 bytes.

Es decir, empujar el contenido significativo hacia la derecha en la variable receptora, sin blancos por su parte derecha, pudiendo tener blancos a la izquierda del contenido significativo hasta completar si fuere necesario los 15 bytes totales.

El contenido origen numérico o alfanumérico, procedente de una variable %VAR1%, puede ser de longitud variable y su contenido significativo estar a la izquierda, a la derecha o en medio de la variable origen.

Si su contenido significativo final fuera más largo de 15 bytes, se tomarán los 15 bytes a contar desde la derecha del final significativo derecho de la %VAR% hasta la izquierda. Que son los que van a caber en el destino BOX1.

Un saludo

Jorge

Aunque no me has confirmado en detalle si te he entendido o no, voy a suponer que sí. Este es el bat que te propongo para tu segundo problema:

@echo off
Setlocal EnableDelayedExpansion
del /q salida.txt
for /f "tokens=*" %%a in (entrada.txt) do (call :convert "%%a")
goto :eof
:convert
set salida=%~1
set aux=%~1
set /a numcar=0
:contcar
set aux=%aux:~1%
if defined aux set /a numcar+=1&goto :contcar
set /a numesp=14-numcar
for /l %%i in (1,1,%numesp%) do set salida= !salida!
echo !salida!>>salida.txt
goto :eof

Lo salvas con el nombre que decidas, creas un archivo de texto de nombre ENTRADA.TXT en el que vas metiendo las líneas con los literales que quieres convertir, ejecutas el BAT y compruebas si en el archivo SALIDA.TXT están las cosas como las quieres. Ya supongo que no es esta exactamente la utilización que le quieres dar pero creo que si esto funciona como debe podrás extraer la parte de código que necesitas que, básicamente, sería la "subrutina" CONVERT.

Y respecto a lo primero te sugiero que saques por aquí un pantallazo con lo que te dice o, si sabes cómo hacerlo, listes lo que te saque la ventana CMD siguiendo el esquema de lo que puse yo:

. Type del bat

. Type del lista.txt

. Ejecución del bat

Por si no supieras como hacerlo solo tienes que colocar la ventana en la zona que quieres copiar, pinchar con el botón de la derecha del ratón, seleccionar Marcar, luego arrastrar el ratón para que se marque toda la zona que quieres copiar y pulsar "Enter". Luego pulsas en el icono "<>" de esta página y cuando se te abra la ventana snippet pulsas Ctrl+V

Buenos días gggirald

Te adjunto el listado del bat propuesto por ti, que funciona bien salvo en que en el ejemplo pone un blanco adicional a la derecha en el campo receptor.

Te adjunto el listado del bat que he modificado ligeramente para poder probarlo

@ECHO OFF
SETLOCAL EnableDelayedExpansion

SET jgUNO=1234
ECHO %jgUNO% >D:\entrada.txt
TYPE D:\ENTRADA.txt

IF EXIST D:\salida.txt del /q D:\salida.txt
for /f "tokens=*" %%a in (D:\entrada.txt) do (call :convert "%%a")
goto eof
:convert
set salida=%~1
set aux=%~1
set /a numcar=0
:contcar
set aux=%aux:~1%
if defined aux set /a numcar+=1&goto :contcar
set /a numesp=14-numcar
for /l %%i in (1,1,%numesp%) do set salida= !salida!
echo !salida!>>D:\salida.txt

TYPE D:\SALIDA.txt
:EOF
PAUSE

Perfecto salvo por el blanco en posición 15 del campo receptor

No te imaginas cuanto envidio tus conocimientos en DOS.

Voy a seguir probando el BAT con otros contenidos 

Saludos

Ya he acabado de probar todo sobre el paso de una variable a un campo de longitud fija.

En todos los casos sitúa un blanco adicional a la derecha en posición 15 en el campo receptor.

Aunque para el caso de que en el origen el contenido no esté ajustado a la derecha es decir existan blancos por la derecha, sitúa 3 espacios en blanco a la derecha del campo receptor.

Espero no haber cometido ninguna barbaridad al modificar tu bat para poder probarlo.

Luego me pondré a probar la propuesta del otro bat para averiguar los bytes libres y totales en un Disco

Intentaré seguir tu último consejo y visualizarte lo que estoy haciendo mal.

Gracias y Saludos

Creo que la razón de ese blanco extra que te sale es que hay un blanco en la redirección de paso de la variable jgUNO al archivo ENTRADA.TXT. Creo que si eliminas el blanco en "ECHO %jgUNO% >D:\entrada.txt" (el que está delante del >) ya no te saldrá.

Un par de comentarios:

1. En lugar de crear el archivo ENTRADA.TXT desde el propio BAT creo que sería más cómodo hacerlo desde el Bloc de notas, con varias líneas para probar de golpe todos los casos.

2. El comando GOTO :EOF no necesita que se cree una etiqueta EOF, forma parte del "lenguaje". Si se crea imagino que se aplica pero si no se crea es como el retorno en una rutina o la salida del BAT en la línea principal.

Respecto a mis conocimientos de DOS no creas que son para tanto. Lo cierto es que me apunté como experto en ese tema un poco forzado por la página porque cuando me apunté me parece que era obligatorio (o a lo mejor no, pero ya puestos...). Y ha sido intentando responder a consultas como he ido haciéndome con cierta experiencia.

Tengo estas páginas anotadas por si te sirven de algo:

http://www.commandline.co.uk/
http://foro.elhacker.net/scripting/programacion_batch_avanzada_nuevo-t132924.0.html
http://profesoremiliobarco.blogspot.com.es/2012/05/comando-for-para-archivos-bat.html
http://www.ugr.es/~jcrobles/trucos%20XP.htm
http://www.ericphelps.com/scripting/samples/index.htm
Supongo que sabes que tecleando los comandos de DOS seguidos de /? obtienes la ayuda que brinda el propio DOS, aunque a veces resulte un poco incomprensible.

Y puedes preguntarme lo que te apetezca.

Gracias gggirald

He quitado el blanco al final del origen y todo perfecto en el destino, y el resultado está perfectamente ajustado a la derecha sin blancos adicionales por la derecha. Error mio.

Otros mini problemas:

1-Como te decía me aumenta el contenido en blancos cuando en el contenido en el origen hay varios blancos por delante y varios blancos por detrás, ampliando el contenido en el receptor por la derecha en 3 blancos adicionales.

2-Cuando el contenido del origen tiene más e 15 bytes el campo receptor también supera los 15 bytes de longitud necesarios.

Saludos

Jorge

He colocado tu propuesta como contenido de un bat y al ejecutarlo cuelga el bat.

Entonces he puesto un pause para ver hasta donde se ejecutaba el bat que tengo en c:\pr2\2\ con el contenido de tu propuesta. De lo contrario se colgaba.

y me aparece en pantalla

C:\pr2\2>C:\users\g\documents\bat1>ver

El sistema no puede encontrarla ruta especificada

c:\pr2\2>microsoft Windows [Versión 10.0.17134.112]

Microsoft no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable.

C:\pr2\2>Users\g\Documents\bat jorge.bat 1>type

El sistema no puede encontrar la ruta especificada

Comprueba si los archivos a copiar caben en el destino 

Formato: "C:\PR"\2\pruebo.bat" destino lista

Ejemplo:

"C:\pr2\2\pruebo.bat" a: lista.txt

Presione una tecla para continuar . . . 

Además observo que se invocan programas Ultimaker que al parecer yo no tengo y que posiblemente sea la causa de que se cuelgue.

Siento no poder reflejar directamente el contenido de la pantalla en imagen directa, no consigo hacerlo con tus instrucciones.

Saludos

Para tu primer mensaje pendiente:

Tal como está el bat suprime, sin contarlos, los espacios situados a la izquierda antes del primer carácter que no sea espacio, pero creo que no debería afectar a los espacios situados a la derecha del último carácter que no sea espacio. Intentaré hacer alguna prueba (lo cierto es que estoy bastante ocupado con unos nietos trillizos de un añito que compartimos entre los miembros de la familia y no siempre puedo ponerme con esto).

Si el literal a transformar tiene más de 15 caracteres (blancos excluidos), no hace nada. Esto habría que mejorarlo. Creo que sería sencillo.

Para tu segundo mensaje pendiente:

Mi propuesta no era para incluirla en el bat. Voy a intentar aclararla un poco.

1. Lo primero que hice fue abrir una ventana CMD y teclear el comando VER para que se pudiera ver la versión de Windows. Eso provocó el texto:

Microsoft Windows [Versión 10.0.17134.112]

2. Luego tecleé el comando TYPE JORGEPE.BAT para que sacara en la ventana CMD el contenido del BAT (al que yo llamé JORGEPE en tu "honor"). En tu caso deberías poner el nombre que le hayas dado al BAT (parece que PRUEBO.BAT) para que pueda verse su contenido exacto.

3. Luego hice lo propio con el LISTA.TXT para que se viera su contenido que era (literalmente):

C:\Users\g\Documents\BAT\2T3ZFREV9HW384950.xml
C:\Users\g\Documents\BAT\afg.bat
C:\Users\g\Documents\BAT\alvaro.bat
C:\Program Files\Ultimaker Cura 3.0\CuraEngine.exe
C:\Program Files\Ultimaker Cura 3.0\numpy.linalg._umath_linalg.pyd

Por tanto estos son los nombres de los archivos que se suponen que se van a copiar, obviamente en mi entorno. En tu caso las LISTA.TXT debería tener los nombres de los archivos que piensas copiar, si es que caben en el destino.

4. Luego ejecuté el BAT, escribiendo su nombre y sus parámetros, JORGEPE G: LISTA.TXT. Lo que sale a continuación es lo que saca el BAT en mi caso:

Se pueden copiar. Total: 4080824 Libres en g: 818159616

Amigo gggirald

Eureka !!!!

Muchísimas gracias por tu ayuda.

Con toda la información que me has dado y algunos pinitos y modificaciones que me he permitido hacer, he conseguido todo lo que me apetecía.

La verdad es que no sé exactamente porqué lo hace pero me resuelve todo.

Tengo otra pregunta:

Hago un call desde un fichero 1.bat a otro fichero 2.bat

en ese otro 2.bat hago otro call a otro fichero 3.bat

Pero entonces no salgo del tercer 3.bat y me repite indefinidamente las últimas instrucciones del último  3.bat sin regresar al 2.bat.

Hay alguna manera de cerrar un bat y regresar al anterior ???

Saludos - Jorge

Creo que no debes quedarte con dudas sobre el funcionamiento de ningún aspecto de los bat que hemos tratado. Tú pregunta lo que quieras que intentaré responderte.

Creo que para salir de un BAT se pueden usar dos maneras: EXIT /B y GOTO :EOF

Por cierto, ¿no necesitas ya controlar que si tiene más de 15 caracteres solo saque 15 o ya lo has resuelto?

Cuando consideres que ya está respondida tu pregunta ciérrala. Si luego se te plantea alguna otra ya sabes que puedes abrir una nueva.

NO tengo resuelto el limitar a 15 caracteres. Cómo ???

Me ha traído loco el goto:eof aunque finalmente lo he conseguido.

Entiendo el delims pero todavía estoy con el tokens y el use...

Mañana acabaré de probar.

Saludos

Jorge Pedro

Prueba a insertar la línea:

if %numcar% gtr 15 set salida=!salida:~0,15!

detrás del FOR de inserción de blancos.

Amigo gggirald

Por fin todo me funciona como era mi deseo, gracias a tu valiosa cooperación.

Sólo he tenido un  pequeño problema cuando  la entrada era inferior a 10, donde se colgaba la rutina. Haciendo mis pinitos he puesto un mínimo de 10 en la entrada y todo solucionado.

No me importa ese número dentro de los grandes números que se manejan.

Otro si antes de cerrar el hilo.

Me resulta incomprensible y gustaría entender los parámetros para tokens, delims y useb.....

Pero sigo estudiando para averiguar.

Muchas gracias por tu colaboración

Jorge Pedro

Me alegro mucho de haberte servido de ayuda.

Respecto a lo que comentas de que "cuando la entrada era inferior a 10 ... se colgaba la rutina" imagino que te refieres a que la línea tuviera menos de 10 caracteres, pero a mí eso no me da ningún problema. Si quieres lo miramos.

Sobre los parámetros del FOR:

DELIMS= sirve para indicar los "separadores de campo" a utilizar en cada línea tratada por el FOR. Si no se indica nada harán esa función el espacio y el tabulador. Si se indica algo, vale exclusivamente lo que se indique. Cada campo de la línea así delimitado se va asignando a las variables consecutivas a partir de la indicada en el FOR. Por ejemplo si la variable indicada fuera %g (o %%g si el FOR está dentro de un BAT) el primer campo se asignaría a %g, el segundo a %h y así sucesivamente. Esto si el TOKENS no modifica esa asignación.

TOKENS= sirve para indicar que campos se asignan a variables. El valor * se usa para "el resto de la línea".

Revisemos los tres (o cuatro) ejemplos que he utilizado:

for /f "tokens=3,*" %%a in ('dir /-C %1 ^| find "bytes libres"') do set /a libres=%%a
for /f "tokens=* delims=" %%a in ('type "%2"') do for /f "tokens=3,*" %%k in ('dir /-C "%%a" ^| find "%%~nxa"') do set /a total+=%%k
for /f "tokens=*" %%a in (entrada.txt) do (call :convert "%%a")

En el primero (y el tercero, incluido en el segundo) le decimos que use los delimitadores por defecto (en concreto nos interesa el espacio) y que asigne a la variable %%a (a la %%k en el caso del tercer FOR) el tercero de los campos y a la %%b (%%l en el tercer FOR) el resto. Si comprobamos la salida del comando DIR /-C vemos que en la línea en que aparece el texto "bytes libres" el tercer campo es el que contiene el número de bytes libres.

En el segundo le decimos que tome toda la línea en la variable %%a, por eso no queremos ningún delimitador y un único token global.

En el cuarto hacemos lo mismo que en el segundo. Realmente creo que cuando solo se toma un token global no es necesario decir nada de los delimitadores, por tanto este sería más "económico" que el anterior.

El USEBACKQ no sé si lo he usado alguna vez pero creo que debe usarse cuando las comillas pueden suponer algún problema.

Gracias de nuevo

Probaré con ello.

Puedes decirme el motivo por el que me dice que

Falta un operador

en la siguiente secuencia en un BAT

for /f "delims=" %%a in (C:\PR2\2\LETZTEd.txt) do SET GEN2=%%a
SET DOC=%GEN2:~87,17%
SET DLI=%GEN2:~105,17%
echo.
echo Mostrar el contenido de las variables
echo.
SET DOC
SET DLI
echo.

echo Sumar el contenido de las dos variables

echo.
set /a suma=%DOC%+%DLI%
set suma
echo.

       En SUMA me da adicionalmente un resultado erróneo de 30

pause

No lo entiendo pues ese sistema lo he utilizado en varias ocasiones funcionando

Jorge Pedro

Olvidé decir que el bat anterior evidentemente empieza con

@echo off
Setlocal EnableDelayedExpansion

En cuanto al 10, me refería cuando el contenido de la variable de entrada era inferior a 10, no a la longitud. He ido aumentando su contenido de 0 a 10, hasta que al llegar a 10 me funciona.

Saludos

Jorge Pedro

Saludos 

Cierro este hilo y abro nueva pregunta

Saludos

Con mi esquema de trabajo, con un archivo de entrada (ENTRADA.TXT) y otro de salida (SALIDA.TXT) no parece haber ningún problema relacionado con el valor de las entradas. Si lo has adaptado tal vez haya algún "agujero" en la adaptación.

D:\BAT>type entrada.txt
2764
0
    3864
   1
      2
000006392
3.678.432
        9
              CONTENT (que supera los 15 bytes, debe perderse lo superior por la izquierda)
Hecho
en el dÝa
D:\BAT>jorgepe1
D:\BAT>type salida.txt
           2764
              0
           3864
              1
              2
      000006392
      3.678.432
              9
Content
          Hecho
      En el dÝa

Al revisar el hilo he visto que he dejado algo sin contestar. Me refiero a lo que decías de que te salía el mensaje "Falta un operador" en tu primer mensaje del 12 de julio. He hecho una simulación y no me da ningún error. Pero la forma de asignar el valor GEN2 a partir de la última línea del archivo LETZTEd.txt puede hacer que la cosa no vaya como pretendes, porque podría ser una línea no numérica por ejemplo.

Y me sorprende tu forma de mostrar el contenido de las variables basado en que el comando SET seguido de algo te muestra el contenido de todas las variables que empiezan por ese algo. Lo habitual es hacerlo con algo como:

echo DOC=%DOC%

¡Gracias!

Todo resuelto con tu ayuda

Ya he podido arreglar mis errores y conocer algo más acerca de FOR, tokens, dekims, etc

Saludos

Jorge Pedro

Espero que se cierre el hilo. Ignoro si hay que hacer algo para ello.

Déjalo así. Si pones algo más me aparecerá como pendiente de respuesta. Me alegro muchísimo de haberte sido de ayuda.

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas