¿Cómo envío las fechas de los archivos a un .txt mediante un .bat?

Tengo un nuevo proyecto, esta vez se trata de la automatización del versionamiento de un programa más grande, puesto que está instalado en varias empresas y a veces, estas tienen diferentes versiones de los archivos.

Mi idea es un Bat que busque todos los archivos en una carpeta madre (habiendo previamente definido el nombre de cada archivo) y después, imprima en un .txt el nombre de la subcarpeta en que se encuentra y su fecha de última modificación

Cualquier ayuda serviría mucho

1 Respuesta

Respuesta
1

Creo que este proyecto necesita un poco más de "definición":

  1. "Versionamiento de un programa más grande", ¿quiere decir que el archivo/programa ejecutable a buscar es el mismo en todos los equipos?
  2. "Busque todos los archivos". ¿No es un poco contradictorio con lo anterior? El nombre de los archivos a buscar, ¿estará en un archivo independiente?
  3. "... en una carpeta madre". ¿El archivo(s) a buscar en cada equipo estará(n) alojado(s) en una carpeta de nombre común aunque pueda ser en una subcarpeta de ella?
  4. ¿Cuál es exactamente la información a recoger en el TXT generado? Por ejemplo: nombre del equipo, nombre completo del archivo, path en el que está alojado, fecha de modificación, tamaño del archivo, ...
  5. ¿Cómo se va a forzar la ejecución del BAT en cada equipo de destino? ¿Por red? ¿Copiando un mismo BAT en los distintos equipos?

Hola, con gusto respondo :

El programa es un programa de mi papá, el mismo contiene varios (muchos) formularios y variando la empresa, algunos están actualizados y otros no, nosotros manejamos una carpeta principal donde alojamos las carpetas de proyecto de cada empresa, lo que haría el bat es buscar el archivo de cada formulario en esta carpeta y decirnos: su última fecha de modificación (para saber si está actualizado) y la carpeta en que se encuentra (para saber a qué empresa corresponde este archivo) 

Ej:

FormAlimentos

Empresa1 20-10-2013

Empresa2 17-11-2020

(espero con eso haber respondido las 4 primeras preguntas )

 Respecto a la 5ta, el archivo se ejecuta sólo en la computadora de mi papá, puesto que él tiene la carpeta madre donde se encuentran los proyectos de cada una de las empresas. 

Muchas gracias por interesarte en mi pregunta ✨ 

Te voy a poner un ejemplo práctico de mi propio entorno. En mi unidad D: tengo muchas carpetas y como hago bastantes BAT puedo intentar averiguar cuantos archivos de nombre PBA.BAT tengo en esa unidad y en que path se encuentran. Me sitúo en el directorio raíz de la unidad D: y ejecuto el comando

dir /s pba.bat

Esto es lo que me sale:

Como puedes ver de esta manera (quizá con un tratamiento posterior, claro, para seleccionar solo la infomación relevante) puedo ver en que carpetas y subcarpetas se encuentran esos archivos del mismo nombre y la fecha y hora del archivo. ¿Crees qué esto puede servir?

Si, supongo que la información específica se ha de sacar con lo de tokens, no? 

Hola, avancé un poco, usé un bat con el que me ayudaste hace unos días para modificar lo que dice, ¿pero cómo podría hacer para poner la fecha en la misma línea que el nombre?

set archivo=permisos3.txt
set carpeta=C:\Users\PROGRAMACION III\Documents\pruebasAn
pushd %carpeta%
echo Versionamiento Autonomina > nuevo.txt
del /q nuevo.txt>nul 2>&1
for /f "usebackq delims=" %%x in ("%archivo%") do (
    set linea=%%x
    set linea=!linea: Directorio de C:\Users\PROGRAMACION III\Documents\pruebasAn\AN\Empresa1\Forms=%ncom19%       %ncom19%        %empcar19%!
    set linea=!linea: 14.331 permisos3.scx=!
    Echo !línea!>>nuevo.txt
)
Popd
echo Versionamiento Autonomina >> nuevo.txt
goto :eof 

Las variables son datos de la empresa, el bat genera un archivo llamado nuevo en el que ya sale más o menos como quisiera, pero quisiera que la fecha me salga en la misma linea (tapé los nombres de la empresa por seguridad)

Teniendo todo en la misma línea, podría armar un csv y listo, pero no se como hacerlo :c

He preparado este BAT:

@echo off
Cls
Color 0A
Title Revisi¢n de versiones
Setlocal EnableDelayedExpansion
set carpeta=C:\Users\PROGRAMACION III\Documents\pruebasAn
set lista=C:\Users\PROGRAMACION III\Documents\pruebasAn\permisos3.txt
set destino=C:\Users\PROGRAMACION III\Documents\pruebasAn\revision.csv
Echo ----------------------------------------------------
Echo - Revisa las versiones de los archivos de la lista -
Echo ----------------------------------------------------
Echo.
Del /q "%destino%">nul 2>&1
echo Nombre;Subcarpeta;Fecha;Hora>>"%destino%"
pushd %carpeta%
for /f "tokens=*" %%x in (%lista%) do (
   echo Revisando %%x
   for /f "tokens=1,2,3,4,*" %%a in ('dir /s "%%x"') do (
      if "%%a"=="Directorio" set subcarp=%%c %%d
      if "%%d %%e"=="%%x " echo %%x;!subcarp!;%%a;%%b>>"%destino%"
      )
   )
Popd
Echo Se ha completado la revisi¢n
Pause>nul

Fíjate que ya lo tenía más o menos probado en mi entorno y que había pensado comentarte que me parecía mejor idea un CSV que un TXT. Otra vez podría haber problemas con la configuración regional porque no sé si en tu país usáis, como nosotros en España, el ";" en lugar de la coma para la separación de campos en este tipo de archivos. Si usáis la coma deberías cambiar el ";" por coma en las dos líneas que escriben en DESTINO.

Se supone que en la carpeta indicada en la variable CARPETA residen las subcarpetas en las que se van a buscar los archivos indicados en la variable LISTA.

Un "problemilla" que todavía no he resuelto es que en el archivo apuntado por esa variable (LISTA) deben figurar los nombres a buscar respetando la "capitalidad" (creo que hay otra palabra para esto pero ahora no me sale), es decir en mayúsculas o minúsculas o combinaciones de las mismas tal como aparezcan en las correspondientes subcarpetas. Por ejemplo si están de las dos maneras, unas veces todo en mayúsculas y otra todo en minúsculas deberán aparecer repetidos.

Bueno, mira a ver que tal resulta y me dices

ok, ahora no puedo revisar porque mi papá está usando su computadora, pero apenas pueda, reviso, reitero mi agradecimiento por tu interés :)

Ya encontré la forma de que el IF no sea sensible a la "capitalidad". Lo tenía delante de los ojos pero no lo había conseguido ver.

Solo hay que incluir el modificador /I, de modo que en lugar de:

      if "%%d %%e"=="%%x " echo %%x;!subcarp!;%%a;%%b>>"%destino%"

debe decir:

      if /i "%%d %%e"=="%%x " echo %%x;!subcarp!;%%a;%%b>>"%destino%"

Gracias por la ayuda, ya funciona completamente

usé el último que me mandaste y tambien el que me habías mandado anteriormente que cambiaba las I por 1, así cambio el path por 3 variables (la empresa, su nombre comercial y la carpeta pero abreviada), una última consulta, tú crees que se puedan organizar por antigüedad ( entre más actual, más arriba) pero dentro de cada archivo

no creo explicarme bien, así que lo hago gráficamente

Nombre      | Empresa  | Nombre Comercial  | Carpeta |Fecha     |Hora |
Altabaja.frx| Empresa1 | Empresa Pepito    |Emp1     |28-5-2019 |19:50|
Altabaja.frx| Empresa2 | Empresa Pepita    |Emp2     |27-5-2019 |19:50|
Altabaja.frx| Empresa3 | Empresa Pepite    |Emp3     |26-5-2018 |19:50|
Altabaja.frx| Empresa4 | Empresa Pepiti    |Emp4     |25-5-2015 |19:50|
Alta.frx    | Empresa1 | Empresa Pepito    |Emp1     |28-5-2019 |19:50|
Alta.frx    | Empresa2 | Empresa Pepita    |Emp2     |23-5-2019 |19:50|
Alta.frx    | Empresa3 | Empresa Pepite    |Emp3     |22-5-2018 |19:50|
Alta.frx    | Empresa4 | Empresa Papiti    |Emp4     |21-5-2015 |19:50|

 Algo así, no se si sea posible, pero de serlo, te agradecería me ayudes.

Por cierto, muchas gracias por tu ayuda, no sabes cuanto me has servido al responder mis repetidas preguntas, disculpa si llego a ser molesto con tantas preguntas, dudas y cosas, no es mi propósito molestarte :(

Hola, para mi ya estaba perfecto, sólo me faltaba esa organización, pero mi papá me dice que si no está en el formato de la siguiente imagen, no le sirve

Mira, si ya no quieres ayudar, lo entendería, igual votaré excelente por todo el apoyo que me has brindado, pero si pudieras ayudarme, te lo agradecería muchísimo.

No prestes atención al último comentario, si les sirve el formato que genera el bat, lo único que falta es ordenar las fechas, no se si sepodría desde el mismo bat o haya una opción en excel, muchas gracias de antemano.

Malas noticias de nuevo, me dicen que no sirve el formato del bat, puesto que no deja hacer una comparacion en todos los archivos entre 2 empresas (o se dificulta mucho) cosa que no sucede en el último formato que te presenté (el de la foto).

Ya me puse depre porque le metí empeño en lo de las variables para que en vez del path, salga la empresa, pero como te digo, si no se puede poner en el otro formato, no hay problema, ya me tocaría hacerlo manual :c

Estoy trabajando en un bat para la comparación entre empresas, así no habría que cambiar el formato, de necesitar ayuda, lo pondré en otra pregunta, pues siento que ya no estaría acorde con este hilo, reitero mi agradecimiento por tu apoyo a lo largo de estos días :)

La ordenación que comentas no es sencilla o, al menos, la forma sencilla que se me ocurre (utilizar el modificador /OD en el comando DIR) no funciona con el /S. Pero la grandísima ventaja de obtener los resultados en CSV es que se puede trabajar en Excel con lo que se ha obtenido y en Excel ya se puede hacer la ordenación que necesitas. Supongo que sabes cómo, si no fuera así me lo dices y te lo cuento.

En cuanto a lo que piensas que podría llegar a resultarme molesto no tengas ningún temor. Disfruto mucho, pero mucho, resolviendo este tipo de problemas. Creo que se puede notar porque en cuanto tengo un rato libre me pongo con ello, y con la cuarentena (y la jubilación) me suele sobrar tiempo libre. En tu caso, además, percibo interés y ganas de hacer las cosas por ti mismo, cosa que no siempre ocurre y que me encanta cuando sucede.

Se han cruzado las respuestas porque tenía pendiente la que acabo de enviar y hasta que la mandé no vi que había más. Voy a leerlas con cuidado y ahora te digo, pero en principio insisto en que tener en Excel la información suele ser muy útil.

Ok, te agradezco por la atención prestada :)

Veo tres posibles campos de actuación:

  1. Ordenación en Excel de resultados
  2. Trasposición en Excel de filas por columnas
  3. Retoque en el formato de la fechas y desaparición de la hora (esto se podría hacer en el propio BAT)

Si te parece correcto y necesitas ayuda en alguno o todos los puntos me lo dices y nos ponemos a ello. No es necesario que abras otra consulta, creo yo, a no ser que el título de la consulta pueda servir a otra persona que en un futuro esté buscando ayuda para algo relacionado con el título, que debería ser una buena razón para crear nuevas consultas, en mi opinión.

Por cierto, en mi caso me sirvió revisar algunas de tus respuestas anteriores, así que dejaré mi código por si le llega a servir a alguien

@echo off
Cls
Color 0A
Title Revisi�n de versiones
Setlocal EnableDelayedExpansion
set carpeta=C:\pruebasAn
set listaf=C:\pruebasAn\versionamiento\Formularios.txt
set listar=C:\pruebasAn\versionamiento\Reportes.txt
set destino1=C:\pruebasAn\versionamiento\Formularios.csv
set destino2=C:\pruebasAn\versionamiento\Reportes.csv
:Menu
   Echo ----------------------------------------------------
   Echo - Revisa las versiones de los archivos de la lista -
   Echo ----------------------------------------------------
   Echo.
   Echo Defina que versionamiento quiere revisar. 
   Echo 1.-Formularios.
   Echo 2.-Reportes.
   set /p resultado=""
      if %resultado% equ 1 goto :Formularios
      if %resultado% equ 2 goto :Reportes
:Formularios
      Del /q "%destino1%">nul 2>&1
      echo Nombre del formulario,Empresa,Nombre comercial,Carpeta,Fecha,Hora>>"%destino1%"
      pushd %carpeta1%
      for /f "tokens=*" %%x in (%listaf%) do (
         echo Revisando %%x
         for /f "tokens=1,2,3,4*" %%a in ('dir /s "%%x"') do (
            if "%%a"=="Directorio" set subcarp=%%c %%d
            if /i "%%d %%e"=="%%x " echo %%x,!subcarp!,%%a,%%b>>"%destino1%"
         )
      )
   Popd
   Echo Se ha completado la revisi�n
   Start C:\Bat\camnamef.bat
   goto :Menu1
:Reportes
      Del /q "%destino2%">nul 2>&1
      echo Nombre del reporte,Empresa,Nombre comercial,Carpeta,Fecha,Hora>>"%destino2%"
      pushd %carpeta%
      for /f "tokens=*" %%x in (%listar%) do (
         echo Revisando %%x
         for /f "tokens=1,2,3,4*" %%a in ('dir /s "%%x"') do (
            if "%%a"=="Directorio" set subcarp=%%c %%d
            if /i "%%d %%e"=="%%x " echo %%x,!subcarp!,%%a,%%b>>"%destino2%"
         )
      )
   Popd
   Echo Se ha completado la revisi�n
   Start C:\Bat\Camnamer.bat
   goto :Menu1
:Menu1
   echo Desea revisar otros archivos?
   set /p dec=""
      if %dec% equ no goto :eof
      if %dec% equ si goto :Menu
Pause>nul

Camname es el archivo que cambia el path por el nombre de la empresa, emplea el siguiente código

@echo off
Setlocal EnableDelayedExpansion
set archivo=Reportes.csv
set carpeta=C:\pruebasAn\versionamiento
pushd %carpeta%
del /q nuevo.csv>nul 2>&1
for /f "usebackq delims=" %%x in ("%archivo%") do (
    set linea=%%x
    set linea=!linea:C:\Users\PROGRAMACION III\Documents\pruebasAn\AN\empresa\Forms=%emp1%,%ncom1%,%empcar1%!
    set linea=!linea:C:\Users\PROGRAMACION III\Documents\pruebasAn\AN\empresa2\Forms=%emp2%,%ncom2%,%empcar2%!
    Echo !Línea!>>reportesn.csv
)
Popd
goto :eof

lo que hace este codigo es que reemplaza el path que imprime el anterior código por una variable de empresa previamente definida (en este caso las variables corresponden al nombre de la empresa, su razón social y la carpeta donde se aloja  respectivamente)

Todo este código fue posible gracias a GGGirald

Ok, me serviría lo de ordenar en Excel (que creo que sería lo más práctico) pero ¿qué tan viable crees que sea lo de hacer un bat que ayude para comparar entre 2 empresas? osea, este bat imprimiría sólo los datos de 2 empresas previamente seleccionadas

Por lo pronto si creo que me serviría más lo de editar los datos en Excel (este trabajo de versionamiento debería estar terminado hasta el viernes, pues el viernes mi papá hará una actualización de su programa en las diferentes empresas y para ello necesita el versionamiento) 

Pero a largo plazo serviría más el Bat...

Podrías ayudarme primero con lo de Excel y después con lo del Bat del que hablo?

Por lo pronto, voy a dormir, acá son las 2 de la madrugada y el sueño me come

De antemano muchas gracias por tu apoyo y disposición.

¡Caray! ¡Que buen trabajo! No veo claras algunas cosas (como dónde se "cargan" los valores de las variables EMPn, NCMn y EMPCARn que figuran en la segunda ventanita pero tampoco importa demasiado si funciona bien).

Me emociona ver lo bien que asimilas lo que te cuento.

Esas variables se cargan previamente, pero son datos de empresas reales y me da un poco de miedo postearlos, por eso no puse como se cargan, pero en un ejemplo sería así:

Set empcar=Carpeta de empresa1
Set emp=Nombre de empresa
Set ncom=Razón Social de la empresa

Al ir con comas se ponen en celdas diferentes y como adapté el formato del .csv, queda algo así:

Nombre      | Empresa  | Nombre Comercial  | Carpeta |Fecha     |Hora |
Altabaja.frx| Empresa1 | Empresa Pepito    |Emp1     |28-5-2019 |19:50|
Altabaja.frx| Empresa2 | Empresa Pepita    |Emp2     |27-5-2019 |19:50|
Altabaja.frx| Empresa3 | Empresa Pepite    |Emp3     |26-5-2018 |19:50|
Altabaja.frx| Empresa4 | Empresa Pepiti    |Emp4     |25-5-2015 |19:50|
Alta.frx    | Empresa1 | Empresa Pepito    |Emp1     |28-5-2019 |19:50|
Alta.frx    | Empresa2 | Empresa Pepita    |Emp2     |23-5-2019 |19:50|
Alta.frx    | Empresa3 | Empresa Pepite    |Emp3     |22-5-2018 |19:50|
Alta.frx    | Empresa4 | Empresa Papiti    |Emp4     |21-5-2015 |19:50|

Vamos con lo de la ordenación en Excel. No soy demasiado experto en Excel pero es un programa/herramienta que me apasiona, de modo que frecuentemente me enfrento a problemillas de Excel, propios o ajenos. Internet me ayuda muchísimo en estos casos. Pongo un pantallazo auxiliar precisamente sobre el resultado en mi entorno del BAT análogo al que puse por aquí:

Pasos para hacer la ordenación:

  1. Elegir la solapa Datos
  2. Marcar el rango de datos a ordenar
  3. Pinchar el icono Ordenar
  4. En la ventana emergente buscar en el desplegable "Ordenar por" la primera columna por la que se quiere ordenar (Nombre).
  5. Pulsar en esa misma ventana el botón "Agregar nivel" y seleccionar en el desplegable "Luego por" la siguiente columna (Subcarpeta)
  6. Repetir el paso 5 para la columna Fecha.
  7. Pulsar Aceptar

Yo trabajo con Excel 2010, pero imagino que en el que uses será similar.

Voy a poner en otro post lo de trasponer filas y columnas.

Una vez ordenados según lo indicado antes marcamos el rango a trasponer (todos los datos en nuestro caso), y hacemos "Copiar", con el botón derecho del ratón o con Ctrl-C. A continuación nos vamos a otra hoja sin usar del libro Excel, nos ponemos en la primera celda y, con el botón derecho abrimos el desplegable contextual y elegimos "Pegado especial" y dentro del nuevo submenú de nuevo "Pegado especial". Pongo pantallazo:

Al pulsar en este último botón se abre una ventana emergente:

En la que marcamos "Transponer" y pulsamos "Aceptar". Con esto en la nueva hoja tendremos la información recolocada en filas lo que eran columnas y viceversa:

Y con esto ya estaría transpuesta (o traspuesta) la información.

Ya me contarás como te va y como lo ves.

Respecto a lo de comparar entre dos empresas, aclárame un poco lo que se quiere comparar. Intuyo que también podría hacerse en Excel pero tengo que entenderlo un poco mejor.

¡Gracias!

Gracias, ahora sólo me queda ir trasponiendo manualmente, igual es un trabajo más o menos largo (son 30 empresas y 170 formularios de reportes) pero lo que demoraba 3 días en hacer, creo que lo terminaré hoy mismo, muchas gracias

Respecto a lo de la comparación, me refería a un bat que te pregunte qué empresas quieres comparar y sólo imprima los datos de las 2 empresas en el .csv, ya estaba viendo una forma de menú en la que te muestra una lista y tú seleccionas las empresas

Éste usa este código

@echo off
Setlocal EnableDelayedExpansion
Echo -----------------------------------------
Echo *        Comparacion de reportes        *
Echo -----------------------------------------
Echo.
Echo Estas son las empresas a comparar.
Echo.
Echo 1.-empresa 1 2.-empresa 2
Echo 3.-empresa 3 4.-empresa 4
Echo 5.-empresa 5 6.-empresa 6
Echo 7.-empresa 7 8.-empresa 8
Echo 9.-empresa 9 10.-Empresa 10
Echo.
Echo Seleccione la primera.
set /p emp1=""
Echo Seleccione la segunda.
set /p emp2=""
goto :eof

eso hice en un momento cuando me vino la idea a la cabeza para no perderla, por ello no lleva a ningun lado cuando seleccionas las 2 empresas, igual creería que sería mejor abrir otra consulta para este nuevo bat.

Repito, muchas gracias por tu apoyo :)

Respecto a la trasposición manual, no entiendo por qué vas a hacerlo de una en una. La idea es que el CSV tenga todas las empresas y todos los formularios tal como estaba planteado inicialmente según el esquema "horizontal":

Nombre      | Empresa  | Nombre Comercial  | Carpeta |Fecha     |Hora |
Altabaja.frx| Empresa1 | Empresa Pepito    |Emp1     |28-5-2019 |19:50|
Altabaja.frx| Empresa2 | Empresa Pepita    |Emp2     |27-5-2019 |19:50|
Altabaja.frx| Empresa3 | Empresa Pepite    |Emp3     |26-5-2018 |19:50|
Altabaja.frx| Empresa4 | Empresa Pepiti    |Emp4     |25-5-2015 |19:50|
Alta.frx    | Empresa1 | Empresa Pepito    |Emp1     |28-5-2019 |19:50|
Alta.frx    | Empresa2 | Empresa Pepita    |Emp2     |23-5-2019 |19:50|
Alta.frx    | Empresa3 | Empresa Pepite    |Emp3     |22-5-2018 |19:50|
Alta.frx    | Empresa4 | Empresa Papiti    |Emp4     |21-5-2015 |19:50|

Trasladada a Excel como:

Y luego, en Excel, lo pasas al esquema "vertical" trasponiendo la totalidad de los datos (en la Hoja1):

Y respecto a la comparación lo único que tengo claro es que se quieren comparar "cosas" de dos empresas, pero ¿qué cosas se comparan?

Lo hago manual para usar el formato complicado que mandé hace algunas publicaciones en el que el nombre del archivo sale sólo una vez a la izquierda y de ahí las fechas, pero estoy usando buscarv y es un goce, super rápido 

Respecto al Bat, imprime los datos de sólo 2 empresas previamente definidas, ya la comparación es manual respecto a lo que se necesite, pero el tener impresas sólo las empresas que se van a comparar, se facilita todo, si no me explico bien, pregunta y con gusto busco otra forma de explicarlo

Gracias por tu interés 

Pero si ya tienes las empresas y sus datos en Excel seguro que puedes quedarte con las dos que quieras, ¿no?

De todas formas entiendo que lo que quieres es aplicar una modificación del bat a solo las dos empresas seleccionadas de tu menú. Supongo que mantendrás la opción de comparar por separado formularios y reportes. Para ello tendrías que "construir" el nombre de la carpeta a partir del nombre de la empresa. Supongamos que esos nombres se guardan en las variables CARP1 y CARP2.

Tendrías que cambiar el comando

      for /f "tokens=*" %%x in (%listaf%) do (

por este:

      for %%x in (%carp1%, %carp2%) do (

Hola, gracias por el apoyo, por ahora no puedo probarlo porque mi papá está ocupado, en la noche lo pruebo a ver qué tal 

Hola, disculpa que hoy no escribí, recién tengo tiempo, no comprendo el cambio, ¿podrías por favor ponerme un ejemplo? No he aplicado el cambio, pero según entiendo, en el archivo de la variable listaf constan los nombres de los archivos a imprimir, al eliminar esto presiento que ya no encontraría qué archivos buscar.

De nuevo y aunque suene repetitivo, es justo decirte gracias por el interés que le pones a todo esto.

Tienes toda la razón. No es en ese nivel en el que hay que hacer los cambios sino en el interno:

            if /i "%%d %%e"=="%%x " echo %%x,!subcarp!,%%a,%%b>>"%destino1%"

Aquí habría que añadir la condición de que se esté tratando una de las dos empresas

            if /i "%%d %%e"=="%%x " echo %%x,!subcarp!,%%a,%%b>>"%destino1%"

Perdón, le di a ENVIAR sin querer.

En lugar del IF que he puesto dos veces el segundo debería ser:

            if /i "%%d %%e"=="%%x " if /i "!subcarp!"=="%carp1%" echo %%x,!subcarp!,%%a,%%b>>"%destino1%"
            if /i "%%d %%e"=="%%x " if /i "!subcarp!"=="%carp2%" echo %%x,!subcarp!,%%a,%%b>>"%destino1%"

Con esto se supone que solo se grabarán los datos de esas dos empresas.

Pero sigo pensando que eso se haría mejor directamente en Excel.

Otra cosa que se me olvida siempre comentarte: no sé si conoces la otra shell del sistema operativo Windows, PowerShell. Yo no tengo gran experiencia con ella pero me consta que es mucho más potente y completa que esta que estamos usando (digamos CMD o Símbolo del sistema). Considero que puede ser más difícil de dominar pero seguramente los resultados podrían hacer que mereciera la pena. Te lo comento por si no lo has pensado o no sabías de su existencia.

Y ya sé que me agradeces mis esfuerzos. Te relevo de que me lo digas más veces ;-)

He hecho algunas pruebas en mi entorno de pruebas y creo que hay que añadir un espacio en las comparaciones. Quedaría así:

            if /i "%%d %%e"=="%%x " if /i "!subcarp!"=="%carp1% " echo %%x,!subcarp!,%%a,%%b>>"%destino1%"
            if /i "%%d %%e"=="%%x " if /i "!subcarp!"=="%carp2% " echo %%x,!subcarp!,%%a,%%b>>"%destino1%"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas