Un truco imperdible para automatizar tareas en Windows
Es fácil hacer que un programa se ejecute al iniciar sesión. ¿Pero qué pasa si queremos que lo haga cuando salimos de nuestro usuario? El secreto, directamente desde Microsoft, a continuación
- 10 minutos de lectura'
![La autocorrección de los procesadores de texto funciona mejor cuanto más se la usa. Pero en tecnología, toda solución tiene su lado oscuro](https://www.lanacion.com.ar/resizer/v2/la-autocorreccion-de-los-procesadores-de-texto-XS66ZNFNDZDDRN5DR5TEH6U4SY.jpg?auth=ff227201dea4f4acba2399e0f1f6949d309371ef199de82bdaf03cf0d2df1b23&width=420&height=280&quality=70&smart=false&focal=693,330)
Hay una regla que aplica a todo dispositivo digital, y que cada día se vuelve más actual (por ejemplo, con la cada vez más omnipresente inteligencia artificial). Esa regla dice que si estás repitiendo una tarea con mucha frecuencia, entonces estás usando mal el dispositivo. ¿Por qué? Porque lo que mejor hacen las máquinas son los trabajos repetitivos y rutinarios. Las máquinas son buenas en todo eso que nosotros hacemos muy mal, y viceversa.
Hay situaciones, sin embargo, donde ambas destrezas se amalgaman de una manera formidable. Tipear, por ejemplo. Pese a que he dedicado toda mi vida profesional a escribir, soy una desastre tipeando. Si me viera un mecanógrafo diplomado, se sentiría ofendido. Como mínimo. Una colega y amiga muy querida me recomendaba el otro día que usara un programa de dictado. Pero ese es precisamente el problema. A mí me gusta tipear; si no siento el texto en las manos, no me sirve. Solo que tipeo horrible. Es como tocar el piano. Me encanta, pero lo hago mal. En este caso, no hay problema. Mayormente uso auriculares. Pero tipear es otro asunto.
Hasta que llegaron las computadoras, tengo que admitirlo, lo pasé mal. Mis notas parecían alguna clase de documento censurado por una agencia de inteligencia. Con montones de palabras y frases tachadas con marcador negro. Supongo que algún editor habría estado persuadido de que las escribía desde prisión, si no fuera que en esa época no las mandabas por correo o por WhatsApp, sino que tenías que llevar las páginas mecanografiadas en persona.
Pero por fin llegaron las PC y, primero, me permitieron corregir todo mi bochornoso tipeo sin tachar y, más tarde, me ofrecieron lo mejor que me han dado las computadoras en mi vida: la autocorrección.
![Autocorrección en LibreOffice. Llegado el caso hará falta agregar palabras a mano, mediante "Opciones de corrección automática". Puede hacerse todo desde el teclado](https://resizer.glanacion.com/resizer/v2/autocorreccion-en-libreoffice-llegado-el-caso-6OOZOUW525HUPMIOHDFFAH6VCQ.jpg?auth=65f84837d09998b6549c3da4ebcd98f58b40edc083259517987245d46b2a6fa0&width=420&height=280&quality=70&smart=true)
Es notable, pero uno siempre se equivoca más o menos igual (y creo que esto cuenta para todos los órdenes de la vida, pero por ahora lo dejaré en la cuestión mecanográfica). Así que mediante esta función que desde hace unos 20 años ofrecen los procesadores de texto, puedo seguir pifiándole a todas las teclas, y el resultado es mayormente perfecto.
Obviamente, hace falta un pequeño aporte: en lugar de decirle al corrector del procesador de texto (LibreOffice, en mi caso) que lo corrija esa única vez, le digo que corrija siempre ese error de esa manera. Funciona. Funciona fantásticamente, de hecho. Hay que ir cargando los errores, cierto, pero como escribo mucho (alrededor de un millón y medio de caracteres por año), cuanto más uso este mecanismo, mejores son los resultados.
Ahora bien
Visto así, parecería ser otro cuadro agudo de solucionismo tecnológico. Pero no. La tecnología por sí no puede resolver un problema completo. O, para ponerlo con más precisión: puede resolver un problema, pero en el proceso va a originar otros (eventualmente, menos graves, en cuyo caso hablamos de progreso). O va a resolver solo una parte del problema. En esto de tipear ocurren ambas cosas.
Primero, la tecnología me corrige en LibreOffice, pero en el chat y el mail lo mío sigue siendo lamentable. Es decir, sí, resuelve gran parte de mi trabajo, pero me vuelve dependiente de una aplicación.
Segundo, los datos de autocorrección deben guardarse en alguna parte. Un archivito en una carpeta de la configuración de LibreOffice (usualmente: C:\Users\{nombre de usuario}\AppData\Roaming\LibreOffice\4\user\autocorr\) es todo lo que se necesita para almacenar y llegado el caso exportar años de corregir errores. Eso está bueno, pero es al mismo tiempo un talón de Aquiles. O sea, si el disco rígido de la máquina falla catastróficamente, adiós a veinte años de autocorrección.
Eso se resuelve fácil y se llama backup. Pero mi fichero de autocorrección (y el diccionario de términos añadidos, dicho sea de paso) vale demasiado para tenerlo solo en backups locales. Así que también escribí un sencillo archivo de ejecución por lotes que cada noche hace una copia de esos ficheros a la nube. Pero la felicidad nunca es completa.
Frente y perfil
Uso siempre la misma computadora para escribir. No por un tema de software, sino de hardware. El teclado, exacto. Mi torpeza no es apta para teclados delicados y pequeños. Así que uso uno de esos gamers, retroiluminados y robustos como un tanque de guerra (un HyperX, al que ya le borré la E y la O, de tanto usarlo #facepalm). Pero es bastante común que alterne entre dos perfiles de usuario en Windows. Y escribo en ambos. Así que en ambos hay una versión diferente del archivo de autocorrección; vamos a llamarlos Perfil A (el principal) y Perfil B (que corre menos servicios en segundo plano y uso para trabajo remoto). Venía postergando una solución para este dilema desde hacía rato, hasta que estos días decidí meterme en el asunto. Resultó menos sencillo de lo que esperaba.
Actualización indispensable: me comenta un lector, con justa razón, que todo esto podría haberse resuelto más fácilmente editando las rutas de las carpetas que contienen los archivos de autocorrección, desde las Opciones de LibreOffice. Es una buena solución, pero todo este asunto viene de más lejos, cuando no estábamos en pandemia. En ese escenario debía mantener sincronizados no ya dos perfiles, sino (al menos) dos computadoras. La de casa y la del diario. Podría haber colocado los archivos de autocorrección de LibreOffice directamente en una carpeta de (digamos) Dropbox, y listo. En principio, sí. Pero con ficheros tan valiosos hay que tener cuidado con la automatización, porque cometés un error y adiós, perdiste semanas o años de trabajo. Además –y esto tal vez es un poco old school, pero nunca me falló–, prefiero limitarme a las herramientas que me ofrecen los sistemas operativos, en lugar de dejar estas tareas en manos de la aplicación de (digamos) Dropbox. En todo caso, sí, es también posible (no lo probé, pero la opción existe) poner desde LibreOffice los archivos de autocorrección en un solo lugar, y el resto sería cuestión de ver los permisos y demás. Lo probaré y habrá más noticias.
Vuelvo. Entra en escena una de las herramientas más útiles que tiene Windows, y una de las menos aprovechadas: el Programador de tareas. Es el que se ocupa cada noche de copiar mis archivos de autocorrección a la nube (entre muchas otras cosas). Ahora podía ayudarme con mi pretensión, siempre exagerada: quería que los archivos de autocorrección de LibreOffice se copiaran al otro perfil al cerrar una sesión. Esto me garantizaba tener en funciones siempre la versión más nueva de esos archivos (más sobre esto enseguida).
![El Programador de tareas; las dos primeras, es decir las más recientes, usan el Evento 4647 como desencadenador; esas son las que mantienen consolidados los archivos de autocorrección de LibreOffice](https://resizer.glanacion.com/resizer/v2/el-programador-de-tareas-las-dos-primeras-es-F5YVEZYUC5BWPJWP5GSM5RV3OY.jpg?auth=dfd8415099644416238638e1b07da720977db586d6e942f3a6835c7a3468f0ba&width=420&height=280&quality=70&smart=true)
Supuse que iba a ser un trámite. Bastaría con escribir un archivo de ejecución por lotes que copiara el archivo de un perfil al otro y una tarea programada que lo ejecutara al cerrar sesión. Hice los deberes prolijamente. No podía no funcionar.
Por supuesto, no funcionó. Había que depurar. La forma más sencilla que se me ocurrió fue añadir una línea al archivo de ejecución por lotes que creara un archivo de texto en el Escritorio del perfil de destino. Nada. Cero. Algo estaba fallando. Y ya me estaba llevando más tiempo del que me había propuesto. ¿Qué hace uno en esos casos? Googlea. Mala idea. La respuesta debía encontrarse en alguna parte, pero lo primero que encontré fueron varias toneladas de quejas contra Microsoft. Creo que quejarse es la actividad más inútil del universo. Así que llamé a Microsoft. Si había una solución, podría resultarles útil también a mis lectores.
¿Por qué pongo la solución en potencial? Porque tenía sentido que una tarea programada fallara al intentar ejecutarla al cerrar sesión. En esas instancias podría cerrarse también el Programador, y adiós. Antes de que lo pregunten, también probé con gpedit.msc, pero ahí las tareas son globales y necesitaba que se corrieran por usuario.
Mis sospechas eran ciertas, no podía ejecutarse una tarea de forma directa al cerrar sesión. Pero en computación (y es una de las grandes diferencias entre la computación y la vida) siempre hay un atajo. Martín Sciarrillo, CTO y Director Customer Success de Microsoft Argentina, me sugirió que utilizara lo siguiente, y acá va la receta:
- En los Desencadenadores elegir Al producirse un evento
- En Registro, buscar Seguridad (hay muchas opciones, pero al apretar la letra S aparece primero)
- Y en Id del evento, usar 4647 (que significa cerrar sesión).
Así, la tarea quedaba programada para ejecutarse cuando Windows registrara el evento 4647. Lo probé y funcionó. Verifiqué las versiones de los archivos y estaban bien en todos los posibles escenarios.
![Desencadenador para que una tarea se ejecute al cerrar sesión: el misterioso "Evento 4647"](https://resizer.glanacion.com/resizer/v2/desencadenador-para-que-una-tarea-se-ejecute-al-YMTZXNROXFHHZEVU7RT7GWIXWY.jpg?auth=60bfeac26589556eab01ad36a31c0d5dc837536173a40ed301a09ca3c509310a&width=420&height=367&quality=70&smart=true)
Para ir cerrando
El Programador de tareas es muy potente y razonablemente fácil de usar. Aparece en primer lugar si escribimos “Pr” en el menú de inicio de Windows.
Entre los desencandenadores está la opción de ejecutar la tarea cuando un cierto perfil (o usuario, en la jerga de Windows) inicia sesión. ¿Habría sido más sencillo hacerlo así? Sí, claro. Eso funciona siempre. El problema es que, aunque no resulta inmediatamente obvio, esa opción podía causar estragos en mis archivos de autocorrección. Fijate.
Partamos de un escenario en el que ambos perfiles tienen la misma copia de esos archivos. Supongamos ahora que estuve escribiendo en el Perfil A y agregué una cantidad de palabras al fichero de autocorrección. Me toca reiniciar, por el motivo que sea. Al volver –sin acordarme de la dichosa tarea programada– inicio de nuevo sesión en el Perfil A. ¿Qué ocurre entonces? Se ejecuta la tarea programada al inicio de sesión y me copia los archivos de autocorrección del Perfil B en el Perfil A, y pierdo todos los cambios.
En cambio, hacerlo al cerrar sesión no debería causar problemas. Arranquemos nuevamente de un escenario donde ambos están consolidados, igual que antes. Ahora escribo en el Perfil A y agrego palabras al archivo de autocorrección. Me toca reiniciar. Al cerrar sesión copia los datos en B, como debe ser. Supongamos que vuelvo a ingresar, pero no en A, sino en B. No pasa nada, porque no se inicia ninguna tarea. Supongamos que no escribo nada en B y salgo. Se ejecuta la tarea y se copia el archivo en A. Pero como es el mismo que antes se había copiado desde A, seguimos teniendo la versión más actual. Lo mismo al revés. Así que (si no pasé nada por alto), ejecutar esta tarea al cerrar sesión era la única forma de garantizarme que un archivo antiguo no sobrescriba uno más nuevo.
Así que ahí tienen. Evento 4647. Suena a película de ciencia ficción. Pero me sacó de problema que no sabía cómo resolver.
Una cosita más: los usuarios estándar de forma predeterminada no pueden correr archivos de ejecución por lotes de forma programada. Para resolver este escollo hay que usar lo que se conoce como Directiva de seguridad local (secpol.msc) y agregar el usuario estándar que se necesite a la opción Directivas locales> Asignación de derechos de usuario> Iniciar sesión como proceso por lotes.