RE:Hacer un restart de orden spool nivel comando
Buf, desde la línea de comandos, ni idea. Hay una función API que te permite controlar el estado de una tarea de impresión. La declaración es esta:
Declare Function SetJob& Lib "spoolss.dll" Alias "SetJobA" (ByVal hPrinter As Long, ByVal JobId As Long, ByVal Level As Long, pJob As Byte, ByVal Command As Long)
Mediante el parámetro command , el trabajo de impresión controlado por JobId puede tomar el valor JOB_CONTROL_RESTART.
Así podría hacerse un programita que desde la línea de comandos recibiera tres parámetros: la impresora, el número de trabajo que se va a modificar y el estado que se va a actualizar.
Otro truco que se me ocurre (un poco cutre, y no sé si funcionará) es el siguiente. Cuando el trabajo se manda a la cola de impresión, se crean dos archivos en el directorio donde esté configurada la cola. Uno tiene extensión .shd y el otro .spl .Estos archivos toman el nombre del siguiente número identificador de trabajo a imprimir, p.e. 00012.shd y 00012.spl . Cuando han terminado de generarse (o cuando alcanzan un cierto tamaño, no se bien) es cuando se mandan a la impresora. Entonces en el momento en el que han finalizado de generarse es cuando se puede hacer algo con ellos. Lo primero sería parar la cola de impresión con 'net stop spooler'. Lo siguiente sería renombrar los ficheros para que cogieran el primer número de trabajo (00001.shd y 00001.spl), y entonces volver a iniciar la cola con 'net start spooler' . En teoría volverían a imprimirse desde el principio, pero no tengo muy claro que funcione.
Bueno, si los de Microsoft te comentan una forma más fácil de hacerlo, cuéntalo en el foro, que no está de mas