Batch pour print massif

Batch pour print massif - Shell/Batch - Programmation

Marsh Posté le 22-05-2021 à 22:04:48    

Bonjour
J'ai une liste de 5000 documents, avec leur chemin complet, répartis dans une multitude de dossiers, et j'aimerais imprimer chacun de ces documents (imprimer en PDF).
je pensais faire un .bat avec la commande PRINT.
 
PRINT [/D:device] [[drive:][path]filename[...]]
 
Mais j'ai du mal à maitriser cette commande.
Déjà j'ai eu du mal a trouver le non de l'imprimante, mais je pense que j'ai trouvé
En tapant 2 fois de suite la même commande, 1 fois ça marche, la seconde fois erreur "Impossible d’initialiser le périphérique" ...
j'ai réussi à projeter mon PDF au bon endroit, en mettant le chemin de projection après "/D:" , a la place du nom de l'imprimante... c'est génial, je savais pas qu'on pouvait faire ça, mais j'arrive plus a le refaire  :??:  
 
Vous sauriez m'expliquer comment ça marche? Je précise (si ça ne se voit pas dans ma question) que je suis ABSOLUMENT débutant en programmation. Faites comme si j'avais 5 ans pour m'expliquer  :)

Reply

Marsh Posté le 22-05-2021 à 22:04:48   

Reply

Marsh Posté le 23-05-2021 à 09:04:16    

Bonjour,
Quelque chose n'est pas clair pour moi, vous avez 5000 fichiers .txt à convertir en fichiers .pdf, c'est bien ça ?

Reply

Marsh Posté le 23-05-2021 à 18:16:08    

Non, j'ai un fichier texte qui liste 5000 fichiers PDF (parmi plusieurs dizaines de milliers) que je souhaite envoyer vers une imprimante. Aussi étrange que cela puisse paraitre, c'est vers "print to PDF" que je dois les envoyer.

Reply

Marsh Posté le 24-05-2021 à 01:12:13    

"print to PDF" est une imprimante virtuelle, elle va simplement convertir vos .txt en .pdf
 
Quant à la commande PRINT, elle permet d'imprimer uniquement des fichiers texte, pas des fichiers PDF ni Word ni Excel.
 
Il va falloir trouver une autre technique, par exemple GhostScript.


Message édité par kyurakushunsui le 24-05-2021 à 01:46:02
Reply

Marsh Posté le 24-05-2021 à 04:49:41    

Vous pouvez télécharger GhostScript ici : https://www.ghostscript.com/download/gsdnld.html
 
Une fois l'installation effectuée, vous pouvez utiliser ce script .bat que je viens de créer :
 

Code :
  1. @echo off
  2. mode con cols=180 lines=35
  3. setlocal enableextensions enabledelayedexpansion
  4. ver | find "10.0." >nul && chcp 65001 >nul || chcp 28591 >nul
  5. color 0F
  6. if "%~1"=="" (exit /b 1)
  7. if not "%~x1"==".txt" (exit /b 1)
  8. for /f "delims=" %%A in ('2^>nul dir /b /ad "%ProgramFiles%\gs"') do set "ghostscript=%ProgramFiles%\gs\%%~A"
  9. for /f "delims=" %%A in ('2^>nul dir /b /ad "%ProgramFiles(x86)%\gs"') do set "ghostscript=%ProgramFiles(x86)%\gs\%%~A"
  10. if defined ghostscript (set "PATH=%ghostscript%\bin;%ghostscript%\lib;%PATH%" ) else (exit /b 1)
  11. if exist "%ghostscript%\bin\gswin32c.exe" (set binaire=gswin32c.exe)
  12. if exist "%ghostscript%\bin\gswin64c.exe" (set binaire=gswin64c.exe)
  13. set index=0
  14. for /f "skip=1 tokens=2,3 delims=," %%A in ('wmic printer get Name^,PortName^,PrinterStatus /format:csv ^| findstr /r "^[A-Za-z0-9]" ^| findstr /i /v "Microsoft Fax Onenote"') do (
  15. set /a index+=1
  16. set "printer[!index!]=%%A"
  17. set "port[!index!]=%%B"
  18. )
  19. :imprimante
  20. for /L %%G in (1,1,!index!) do echo. & echo.##### [%%G] !printer[%%G]! ("!port[%%G]!" )
  21. echo. & set "choix="
  22. set /p choix="Veuillez sélectionner une imprimante : "
  23. if not defined choix (cls & goto :imprimante)
  24. if not defined printer[%choix%] (cls & goto :imprimante)
  25. echo. & echo Vous avez choisi : !printer[%choix%]!
  26. echo. & echo.
  27. if defined binaire (%binaire% -dPrinted -sDEVICE=mswinpr2 -sPAPERSIZE=a4 -dFIXEDMEDIA -dBATCH -dNOPAUSE -sOutputFile="%%printer%%!printer[%choix%]!" @"%~1" )
  28. exit


 
Un double clic pour lancer le script ne fonctionnera pas.
 
Pour pouvoir utiliser le script, il faut effectuer un glisser-déposer du fichier texte (contenant la liste des PDF) sur l'icône du fichier .bat
 
Le script a été testé (et approuvé) sur Windows 10 Pro 64 bits auquel est reliée une imprimante "Brother MFC-L2710DW"
Le test a été effectué avec l'imprimante connectée via le port USB et également via la liaison sans fil.


Message édité par kyurakushunsui le 24-05-2021 à 16:11:58
Reply

Marsh Posté le 27-05-2021 à 21:24:44    

Bonjour,
Merci pour vos contributions, en particulier kyurakushunsui.
Je n'ai finalement pas utilisé votre scripte, car idéalement, je ne souhaitais pas avoir à installer quoi que ce soit. sur ma machine.
J'ai fait plusieurs essais avant de comprendre comment fonctionnait la commande print avec une imprimante PDF.
Je rappel que le but est de copier des fichiers PDF sans passer par la commande copy ou robocopy.
 
je vous livre ci dessous ma procédure :
 
Lancer un print d'initialisation d'un "fichier bidon.pdf"
print /D:"MICROSOFT Print to PDF" "chemin du fichier bidon"
Un fichier "MICROSOFT Print to PDF" sera créé dans le repertoir actif de cmd. Il n'a pas d'extension, mais si on ajoute .PDF au nom du fichier, on peut ouvrir le "MICROSOFT Print to PDF.PDF" qui sera la copie exacte de "fichier bidon.PDF"
lancer les autres impressions avec le chemin de projection  
print /D:"chemin du fichier projeté" "chemin du fichier à imprimer"
 
ATTENTION : si le fichier projeté existe déjà, message d'erreur "impossible d'initialiser le périphérique "chemin du fichier projeté"
 

Reply

Marsh Posté le 28-05-2021 à 11:47:26    

Merci d'avoir enfin précisé le but de la manoeuvre : faire une copie de fichiers pdf sans utiliser les commandes copy et robocopy.
 
Car le titre du sujet n'a rien à voir avec une quelconque copie, il s'agit d'imprimer massivement.


Message édité par kyurakushunsui le 28-05-2021 à 12:03:18
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed