All pastes #1557102 Raw Edit

evilmaster

public text v1 · immutable
#1557102 ·published 2009-09-07 12:47 UTC
rendered paste body
@REM 
@REM Word to PDF automated batch printing
@REM by evilmaster 2009
@REM www.evilmaster.net
@REM
@REM Make sure you have defined an output directory in the Adobe PDF printer
@REM settings unless you want to enter an output file for each document!
@REM 

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION 
:start
CLS

REM Get Wordpath

FOR /F "TOKENS=3 DELIMS=	" %%A IN ('REG QUERY "HKLM\SOFTWARE\Classes\Word.Application\CLSID" /ve') DO SET WordCLSID=%%A
IF %ERRORLEVEL% EQU 1 GOTO error
IF "!WordCLSID!" == "" ECHO Can't find Word && GOTO quit
FOR /F "TOKENS=3 DELIMS=	" %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\Software\Classes\CLSID\!WordCLSID!\LocalServer32" /ve') DO SET WordPath=%%A
IF %ERRORLEVEL% EQU 1 GOTO error
IF "!WordPath!" == "" ECHO Can't get Word path && GOTO quit
FOR /F "TOKENS=1 DELIMS=/" %%A IN ('ECHO.!WordPath!') DO SET WordPath=%%A
IF "!WordPath!" == "" ECHO Can't parse Word path && GOTO quit
ECHO Word is located here: !WordPath!

REM Read and remember the default printer so we can restore it later

FOR /F "TOKENS=3 DELIMS=	" %%A IN ('REG QUERY "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows" /v Device') DO SET DefaultPrinter=%%A
IF %ERRORLEVEL% EQU 1 GOTO error

IF "!DefaultPrinter!" == "" ECHO Can't find default printer && GOTO quit
ECHO Default printer: !DefaultPrinter!

REM Try to set Adobe PDF printer as new default printer

rundll32 printui.dll,PrintUIEntry /q /y /n"Adobe PDF"
IF %ERRORLEVEL% EQU 1 ECHO Error setting "Adobe PDF" printer && GOTO quit

REM Check if Adobe PDF printer was successfully set

FOR /F "TOKENS=3 DELIMS=	" %%A IN ('REG QUERY "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows" /v Device') DO SET NewPrinter=%%A
IF "!NewPrinter!" == "" ECHO Can't read default printer &&  GOTO quit
FOR /F "TOKENS=1 DELIMS=," %%A IN ('ECHO.!NewPrinter!') DO SET NewPrinter=%%A
IF "!NewPrinter!" NEQ "Adobe PDF" ECHO Failed to set printer: "Adobe PDF" && GOTO quit
IF "!NewPrinter!" == "Adobe PDF" ECHO Successfully set printer: "!NewPrinter!" && ECHO. && GOTO convert

GOTO error

:convert

REM Print every .doc file in the directory to the Adobe PDF printer

FOR %%I IN (*.doc) DO (
	SET Filename=%%~nI
	ECHO Printing: !Filename!
	START "Printing" /min /wait "!WordPath!" "!Filename!.doc" /a /mfileprintdefault /mFileExit
	ECHO.
)
ECHO Done!
ECHO.

REM Reset default printer to it's old value

ECHO Resetting default printer: !DefaultPrinter!
REG ADD "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows" /v Device /t REG_SZ /d "!DefaultPrinter!" /f > nul
IF %ERRORLEVEL% EQU 1 ECHO Error setting default printer && GOTO quit

GOTO quit

:error
ECHO Error: Something went wrong.

:quit
ECHO.
PAUSE
ENDLOCAL