En el hipotético caso de que la impresora active algún servicio de forma automática justo antes de imprimir entonces sería una tarea sencilla de realizar, monitorizando el estado del servicio (Started/Stopped) filtrando la salida del comando SC con un scrpit Batch.
No me cuesta nada mostrarte un ejemplo, pero es que lo de que la impresora active por si mismo el servicio de cola de impresión u otros servicios de terceros es solo una hipótesis, así que no quiero codear en vano .
Puedes hacer una prueba, en el panel de servicios de Windows (services.msc) busca servicios instalados por tu software de impresora (si es que utilizas algun software de terceros) y detén esos servicios, además detén estos dos servicios:
· Cola de impresión · Extensiones y notificaciones d eimpresora
Cuando los hayas detenido todos, intenta hacer una impresión, si no funciona, activa el servicio de "cola de impresión" (porque me parece que la impresora no puede activar el servicio de forma automática) y prueba con el resto de servicios detenidos.
En fín lo suyo es comprobar si alguno de los servicios se activa por si solo para realizar la impresión, con eso sería suficiente para codear el Batch.
ShellInfo es una aplicación command-line que devuelve información específica de un archivo o de un directorio:
· Ruta absoluta · Directorio · Nombre de archivo · Nombre de carpeta · Tamaño (en bytes) · Fecha de creación · Fecha de Modificación · Fecha de último acceso · Lista de archivos
La aplicación está pensada para integrarla en el menú contextual de Windows, aunque también se puede usar de forma manual desde la consola para automatizar otro tipo de tareas.
Demostración:
( ATENCIÓN, ESTE VIDEO ES DE LA ANTIGUA VERSIÓN V1.0 )
Menu en cascada para Windows 8 - Copiar Información
Imágenes:
Opción "Reporte completo" para carpetas:
Código:
Nombre de carpeta: Debug
Ruta completa...: C:\Visual Studio Projects\CopyPath\CopyPath\bin\Debug Letra de unidad.: C:\
Fecha de creación.....: 15/09/2013 16:03:19 Fecha de modificación.: 17/09/2013 8:40:55 Fecha de último acceso: 17/09/2013 8:40:55
Longitud de ruta completa....: 53 Longitud de nombre de carpeta: 5
Tamaño en Bytes....: 155.002 Bytes Tamaño en Kilobytes: 151,37 KB Tamaño en Megabytes: 0,15 MB Tamaño en GigaBytes: 0,00 GB Tamaño en TeraBytes: 0,00 TB
Opción "Reporte completo" para archivos:
Código:
Nombre de archivo: CopyInfo.exe
Ruta completa...: D:\Utilidades\Registros\Menú contextual\CopyInfo.exe Setup\{sys}\CopyInfo.exe Directorio......: D:\Utilidades\Registros\Menú contextual\CopyInfo.exe Setup\{sys} Letra de unidad.: D:\
Extensión de archivo: exe Atributos de archivo: Archive, NotContentIndexed Versión de archivo..: 1.0.0.0
Fecha de creación.....: 16/09/2013 21:39:42 Fecha de modificación.: 17/09/2013 8:33:01 Fecha de último acceso: 16/09/2013 21:39:42
Longitud de ruta de acceso...: 85 Longitud de directorio.......: 72 Longitud de nombre de archivo: 12
Tamaño en Bytes....: 35.840 Bytes Tamaño en Kilobytes: 35,00 KB Tamaño en Megabytes: 0,03 MB Tamaño en GigaBytes: 0,00 GB Tamaño en TeraBytes: 0,00 TB
También pueden aprovecharse de su utilización para automatizar otro tipo de tareas, por consola:
/? | Display this help | /fullname | Return Full path /filename | Return Filename (including extension) /Dir | Return Directory name /Size | Return Size (In bytes) /Attrib | Return Attributes /CreationTime | Return Creation date /ModifyTime | Return Modification date /AccessTime | Return Last access date /FullnameLen | Return Full path length /FilenameLen | Return Filename length /DirLen | Return Directory length /FileList | Return directory file list /FileListRec | Return directory file list (recursive) /Report | Return a report with all of this and additional info. | /C | Send the info to Clipboard. | NOTE: Use this switch as last argument.
[+] Usage examples:
Program.exe /fullname ".\File.txt" # Returns the full path. (Ex: C:\File.txt)
Program.exe /fullname ".\File.txt" /C # Returns the full path and copy it into Clipboard. (Ex: C:\File.txt)
Program.exe /drive "C:\File.txt" # Returns the drive letter. (Ex: C:\)
Program.exe /size "C:\File.txt" # Returns the size in bytes. (Ex: 100024)
Como el explorer.exe no puede encontrar el directorio especificado (Primer argumento: "C:\Carpeta") entonces por defecto te redirige a la localización de "mis documentos".
porque no funciona el "set m=%t:~0,x%" (Es decir, porque la x no actua como variable)
Lo primero de todo es que en ese ejemplo estás escribiendo una x literal, no una variable.
Una x:
Código:
x
Una variable:
Código:
%x%
Entonces añadiendo los caracteres que faltan, nos quedaría así la sintaxis:
Código:
%t:~0,%x%%
Pero de todas formas los caracteres "%" de inicio y fin de variable de la variable "%X%" entrarían en conflicto con los caracteres "%" de la otra variable "%T%", y esto es lo que conseguirías:
%t:~0,%x%%
Lo que he marcado en rojo es lo que Batch tomaría como la primera variable, desde el primer caracter "%" hasta el segundo "%", lo que he resaltado en en verde se tomaría como un string, y lo que he resaltado en amarillo es lo que se tomaría como otra variable, o en este caso como un escape del operador "%".
Como puedes entender a simple vista eso no podría funcionar jamás porque como resultado se habrán parseado mal los datos, obteniendo más datos y variables de las que en realidad tenemos.
Entonces al intentar realizar el substring (var:~0,1) y al intentar mostrar el resultado con "echo %m%", esto es lo que Batch te mostraría:
Código:
x%
El string (x) y el operador escapado % (%%), eso es lo que Batch ha podido entender.
Es por esa razón que se deben expandir las variables en tiempo de ejecución en lugar de parsearlas, o en su defecto también podemos usar la recursividad con el comando Call para parsear las variables.
Lee acerca del comando Setlocal EnableDelayedExpansion y su utilización.