目次
ドラッグ&ドロップでファイルを渡すと、同じフォルダにPDFができます(常に上書きされます)。
複数ファイルに対応しています。意外とないので便利。
powershell~$word.Quit()"までは一行です。
Wordファイル(.docx)をPDFに変換するバッチファイル
@echo off
:loop
if "%~1"=="" goto :end
echo %~1
echo PDFファイルに変換中です。このウィンドウは閉じないでください。
powershell -Command "$word=New-Object -ComObject Word.Application;$file='%~1';$doc=$word.Documents.OpenNoRepairDialog($file);$doc.SaveAs([ref] $file.Replace(\".docx\",\".pdf\"),[ref] 17);$doc.Close();$word.Quit()"
shift
goto loop
:end
exit /b
docx, doc, xlsx, xls, pptx, ppt に対応したバージョン
@echo off
set ARGS=%*
set ARGS=%ARGS:,=$comma$%
set ARGS=%ARGS:;=$semicolon$%
set ARGS=%ARGS: =$fullwidthsp$%
call :main %ARGS%
exit /b
:main
:loop
if "%~1"=="" goto :end
set ARG1=%~1
set ARG1=%ARG1:$comma$=,%
set ARG1=%ARG1:$semicolon$=;%
set ARG1=%ARG1:$fullwidthsp$= %
if exist "%ARG1%" (
echo %ARG1%
echo PDFファイルに変換中です。このウィンドウは閉じないでください。
) else (
echo %ARG1%
echo ファイルが存在しないか、ファイル名に処理できない記号等が含まれており、変換できません。何かキーを押してください。
pause
shift
goto loop
)
if %~x1==.docx (
powershell -Command "$app=New-Object -ComObject Word.Application;$file='%ARG1%';$doc=$app.Documents.OpenNoRepairDialog($file);$doc.SaveAs([ref] $file.Replace(\".docx\",\".pdf\"),[ref] 17);$doc.Close();$app.Quit()"
)
if %~x1==.doc (
powershell -Command "$app=New-Object -ComObject Word.Application;$file='%ARG1%';$doc=$app.Documents.OpenNoRepairDialog($file);$doc.SaveAs([ref] $file.Replace(\".doc\",\".pdf\"),[ref] 17);$doc.Close();$app.Quit()"
)
if %~x1==.xlsx (
powershell -Command "$app=New-Object -ComObject Excel.Application;$file='%ARG1%';$doc=$app.Workbooks.Open($file);$doc.ExportAsFixedFormat([ref] 0, [ref] $file.Replace(\".xlsx\",\".pdf\"));$doc.Close();$app.Quit()"
)
if %~x1==.xls (
powershell -Command "$app=New-Object -ComObject Excel.Application;$file='%ARG1%';$doc=$app.Workbooks.Open($file);$doc.ExportAsFixedFormat([ref] 0, [ref] $file.Replace(\".xls\",\".pdf\"));$doc.Close();$app.Quit()"
)
if %~x1==.pptx (
powershell -Command "$app=New-Object -ComObject Powerpoint.Application;$file='%ARG1%';$doc=$app.Presentations.Open($file);$doc.SaveAs([ref] $file.Replace(\".pptx\",\".pdf\"), [ref] 32);$doc.Close();$app.Quit()"
)
if %~x1==.ppt (
powershell -Command "$app=New-Object -ComObject Powerpoint.Application;$file='%ARG1%';$doc=$app.Presentations.Open($file);$doc.SaveAs([ref] $file.Replace(\".ppt\",\".pdf\"), [ref] 32);$doc.Close();$app.Quit()"
)
shift
echo;
goto loop
:end
exit /b