Impression de plusieurs fichiers dans l'ordre
Fermé
fanch_22
Messages postés
1
Date d'inscription
vendredi 19 décembre 2014
Statut
Membre
Dernière intervention
19 décembre 2014
-
19 déc. 2014 à 16:50
pcturbo Messages postés 567 Date d'inscription samedi 26 juillet 2008 Statut Contributeur Dernière intervention 13 avril 2024 - 8 janv. 2015 à 22:16
pcturbo Messages postés 567 Date d'inscription samedi 26 juillet 2008 Statut Contributeur Dernière intervention 13 avril 2024 - 8 janv. 2015 à 22:16
A voir également:
- Imprimer plusieurs pdf dans l'ordre
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Comment signer un pdf sans l'imprimer - Guide
- Save as pdf - Télécharger - Bureautique
- Comment faire un pdf - Guide
- Comment modifier un pdf - Guide
1 réponse
pcturbo
Messages postés
567
Date d'inscription
samedi 26 juillet 2008
Statut
Contributeur
Dernière intervention
13 avril 2024
198
7 janv. 2015 à 21:21
7 janv. 2015 à 21:21
Bonjour,
Je vous propose la solution suivante, qui peut être adaptée pour tout besoin du même genre, à savoir :
Imprimer une série de fichiers de même type (pris en charge par la même application) et dans un ordre spécifique.
Cette solution est valable pour tout type de fichier dont l'application permet le lancement de l'impression par ligne de commande. Dans votre cas il s'agit de MS Outlook. Comme vous n'avez spécifié ni votre système d'exploitation (MAC, Windows, Linux, ...) ni sa version, ni la version de Outlook, la solution ci-dessous est valable pour Windows 64bit 7 ou 8 et MS Outlook 2010 (MS Office 14). Cela devrait fonctionner pour des fichiers .msg exportés depuis Outlook.
La particularité du problème est d'assurer l'ordre d'impression des fichiers. Comme vous l'avez constaté, le fait de sélectionner une série de fichiers dans l'explorateur Windows puis d'en commander l'impression, ne garantit pas l'ordre de traitement. Il s'agit donc de passer les fichiers un à un à l'application, et d'automatiser le processus.
Pour ce faire, nous allons créer deux fichiers, l'un qui contiendra la liste des fichiers, dans l'ordre souhaité ; l'autre contiendra un petit programme.
Préparation de la liste de fichiers.
Préparez un dossier qui contient tous les fichiers à imprimer, et aucun autre. Pour simplifier les manips par la suite, je vous conseille de positionner ce dossier à la rracine du disque (ou clé USB) et de lui donner un nom court et sans espace. Je prends comme exemple le dossier "F:\messages". Il sera aussi plus simple si les noms des fichiers sont sans espace.
Le fichier sera de type texte simple et contiendra un nom de fichier par ligne. Pour le créer, on va ouvrir une fenêtre ligne de commande Windows, puis utiliser une commande qui écrira la liste des fichiers automatiquement.
- appuyez sur les touches [Windows] et [R]
- dans la boîte de dialogue Exécuter", tapez "cmd" sans les guillemets puis touche [Entrée]
- Windows vous affiche une invite de commande.
Tapez "
Tapez "
- tapez
- Windows créera dans ce même dossier un fichier listemsg.txt qui contient la liste de tous les fichiers .msg par ordre alphabétique. Si vous avez besoin d'un ordre différent, reprenez ce fichier avec un outil que vous maîtrisez.
Identification de votre imprimante.
Nous aurons besoin du nom de votre imprimante. Ouvrez la liste des imprimantes, faites un clic droit sur l'imprimante que vous souhaitez utiliser, choisissez Propriétés et notez scrupuleusement le nom de l'imprimante. Vous pourrez revenir ici le moment venu et le copier - coller.
Préparation du fichier programme
Laissez la fenêtre de ligne de commande ouverte, et lancez le bloc-notes. Par exemple, appuyez sur les touches [Windows] et [R] puis tapez notepad puis validez.
Dans ce nouveau fichier texte, copiez-collez les 12 lignes de texte/code suivant :
Attention ce qui est affiché lignes 4 et 5 ci-dessus ne doit en fait former qu'une seule ligne. Je la compte comme une seule ligne dans mes remarques ci-dessous.
Corrigez ligne 3 le nom de fichier listemsg.txt si vous avez utilisé un autre nom.
Corrigez ligne 4 le nom de dossier F:\messages si le dossier n'a pas ce chemin. Attention, ne touchez qu'au chemin du dossier (par exemple laissez les guillemets, le \ qui suit etc.)
Remplacez obligatoirement ligne 4 la mention lenomdevotreimprimante par le nom de votre imprimante. Si le nom comporte des espaces, entourez-le de guillemets.
Enregistrez ce nouveau fichier que vous êtes en train d'élaborer dans le même dossier F:\messages ou celui que vous utilisez, sous le nom impmsg.cmd
Essais et Modifications
Je vous conseille de faire un essai avec une copie du fichier de liste qui ne fait que 3 lignes (trois messages à imprimer).
Par ailleurs, vous aurez peut-être besoin d'ajuster :
- la ligne 4 du programme si Outlook n'est pas installé à cet endroit (autre version, Windows XP, ...). Cette ligne doit commencer par le chemin complet de l'exécutable entre guillemets.
- la ligne 7 contient une instruction qui donne à Outlook le temps de prendre en charge la commande, avant de lui balancer le fichier suivant. J'ai mis la valeur 4 (c'est des secondes) mais si vous constatez que les messages ne sont pas imprimés dans l'ordre il faudra l'augmenter.
Pour lancer l'impression
Retournez dans la boîte de commande Windows. Vérifiez que l'invite de commande est formé par le chemin du dossier F:\messages> ou le chemin de votre dossier.
Tapez impmsg puis touche [Entrée]. impmsg est le nom de votre fichier programme.
Bonne chance.
Pour les utilisateurs avancés:
Pour s'en servir pour d'autres types de fichiers dont l'impression par ligne de commande est prise en charge il suffit de récupérer les infos sur la commande et les options.
Par exemple pour la version 11 d'Adobe Reader pour imprimer un lot de pdfs on mettrait en ligne 4:
La valeur du timeout doit être supérieur au temps entre l'exécution de la ligne 4 et la réponse obtenue par errorlevel. La réponse errorlevel n'est pas émise à la fin de chaque impression (en tout cas par AcroRd32), elle est donnée au début, dès que le fichier a été lu. Sans timeout, windows n'attend pas et balance tout les yeux fermés, et le résultat c'est que l'application serveur va plutôt traiter le dernier fichier en premier, ou comme il peut... et on peut s'attendre à des problèmes de mémoire. Le timeout permet de réguler le flux et de garantir l'ordre.
Je vous propose la solution suivante, qui peut être adaptée pour tout besoin du même genre, à savoir :
Imprimer une série de fichiers de même type (pris en charge par la même application) et dans un ordre spécifique.
Cette solution est valable pour tout type de fichier dont l'application permet le lancement de l'impression par ligne de commande. Dans votre cas il s'agit de MS Outlook. Comme vous n'avez spécifié ni votre système d'exploitation (MAC, Windows, Linux, ...) ni sa version, ni la version de Outlook, la solution ci-dessous est valable pour Windows 64bit 7 ou 8 et MS Outlook 2010 (MS Office 14). Cela devrait fonctionner pour des fichiers .msg exportés depuis Outlook.
La particularité du problème est d'assurer l'ordre d'impression des fichiers. Comme vous l'avez constaté, le fait de sélectionner une série de fichiers dans l'explorateur Windows puis d'en commander l'impression, ne garantit pas l'ordre de traitement. Il s'agit donc de passer les fichiers un à un à l'application, et d'automatiser le processus.
Pour ce faire, nous allons créer deux fichiers, l'un qui contiendra la liste des fichiers, dans l'ordre souhaité ; l'autre contiendra un petit programme.
Préparation de la liste de fichiers.
Préparez un dossier qui contient tous les fichiers à imprimer, et aucun autre. Pour simplifier les manips par la suite, je vous conseille de positionner ce dossier à la rracine du disque (ou clé USB) et de lui donner un nom court et sans espace. Je prends comme exemple le dossier "F:\messages". Il sera aussi plus simple si les noms des fichiers sont sans espace.
Le fichier sera de type texte simple et contiendra un nom de fichier par ligne. Pour le créer, on va ouvrir une fenêtre ligne de commande Windows, puis utiliser une commande qui écrira la liste des fichiers automatiquement.
- appuyez sur les touches [Windows] et [R]
- dans la boîte de dialogue Exécuter", tapez "cmd" sans les guillemets puis touche [Entrée]
- Windows vous affiche une invite de commande.
Tapez "
F:" sans les guillemets puis touche [Entrée] (vous indiquerez la lettre de votre disque USB si différente).
Tapez "
cd \messages" sans les guillemets puis touche [Entrée] (vous indiquerez le chemin de votre dossier si différent).
- tapez
dir /B *.msg > listemsg.txtpuis touche [Entrée]
- Windows créera dans ce même dossier un fichier listemsg.txt qui contient la liste de tous les fichiers .msg par ordre alphabétique. Si vous avez besoin d'un ordre différent, reprenez ce fichier avec un outil que vous maîtrisez.
Identification de votre imprimante.
Nous aurons besoin du nom de votre imprimante. Ouvrez la liste des imprimantes, faites un clic droit sur l'imprimante que vous souhaitez utiliser, choisissez Propriétés et notez scrupuleusement le nom de l'imprimante. Vous pourrez revenir ici le moment venu et le copier - coller.
Préparation du fichier programme
Laissez la fenêtre de ligne de commande ouverte, et lancez le bloc-notes. Par exemple, appuyez sur les touches [Windows] et [R] puis tapez notepad puis validez.
Dans ce nouveau fichier texte, copiez-collez les 12 lignes de texte/code suivant :
@echo off
:debut
FOR /F "delims=," %%i IN (listemsg.txt) DO (
"c:\program files (x86)\microsoft office\office14\outlook.exe" /p "F:\messages\%%i" lenomdevotreimprimante
if errorlevel 0 (
echo %%i est en cours d'impression.
timeout /T 4 >nul
) ELSE (
echo Un problème s'est produit pendant l'impression de %%i.
)
)
echo Fin de l'impression des messages.
Attention ce qui est affiché lignes 4 et 5 ci-dessus ne doit en fait former qu'une seule ligne. Je la compte comme une seule ligne dans mes remarques ci-dessous.
Corrigez ligne 3 le nom de fichier listemsg.txt si vous avez utilisé un autre nom.
Corrigez ligne 4 le nom de dossier F:\messages si le dossier n'a pas ce chemin. Attention, ne touchez qu'au chemin du dossier (par exemple laissez les guillemets, le \ qui suit etc.)
Remplacez obligatoirement ligne 4 la mention lenomdevotreimprimante par le nom de votre imprimante. Si le nom comporte des espaces, entourez-le de guillemets.
Enregistrez ce nouveau fichier que vous êtes en train d'élaborer dans le même dossier F:\messages ou celui que vous utilisez, sous le nom impmsg.cmd
Essais et Modifications
Je vous conseille de faire un essai avec une copie du fichier de liste qui ne fait que 3 lignes (trois messages à imprimer).
Par ailleurs, vous aurez peut-être besoin d'ajuster :
- la ligne 4 du programme si Outlook n'est pas installé à cet endroit (autre version, Windows XP, ...). Cette ligne doit commencer par le chemin complet de l'exécutable entre guillemets.
- la ligne 7 contient une instruction qui donne à Outlook le temps de prendre en charge la commande, avant de lui balancer le fichier suivant. J'ai mis la valeur 4 (c'est des secondes) mais si vous constatez que les messages ne sont pas imprimés dans l'ordre il faudra l'augmenter.
Pour lancer l'impression
Retournez dans la boîte de commande Windows. Vérifiez que l'invite de commande est formé par le chemin du dossier F:\messages> ou le chemin de votre dossier.
Tapez impmsg puis touche [Entrée]. impmsg est le nom de votre fichier programme.
Bonne chance.
Pour les utilisateurs avancés:
Pour s'en servir pour d'autres types de fichiers dont l'impression par ligne de commande est prise en charge il suffit de récupérer les infos sur la commande et les options.
Par exemple pour la version 11 d'Adobe Reader pour imprimer un lot de pdfs on mettrait en ligne 4:
"C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" /h /t "F:\messages\%%i" lenomdevotreimprimante
La valeur du timeout doit être supérieur au temps entre l'exécution de la ligne 4 et la réponse obtenue par errorlevel. La réponse errorlevel n'est pas émise à la fin de chaque impression (en tout cas par AcroRd32), elle est donnée au début, dès que le fichier a été lu. Sans timeout, windows n'attend pas et balance tout les yeux fermés, et le résultat c'est que l'application serveur va plutôt traiter le dernier fichier en premier, ou comme il peut... et on peut s'attendre à des problèmes de mémoire. Le timeout permet de réguler le flux et de garantir l'ordre.
7 janv. 2015 à 23:06
Modifié par pcturbo le 8/01/2015 à 22:20
1° : ignorez mon deuxième message, il n'est pas nécessaire de lancer Outlook au préalable. En revanche si on utilise la technique avec Adobe Reader, là c'est nécessaire.
2° : dans le programme, ligne 4, ignorez le dernier paramètre "lenomdevotreimprimante". Outlook ne le gère pas (c'est un paramètre valable pour Adobe Reader). Outlook envoie sur l'imprimante par défaut. Il convient donc de définir l'imprimante à utiliser comme imprimante par défaut avant de lancer l'impression.
Le code du programme est donc: