现在桌面名为“test”的文件夹下有三个文件夹:“picture”是图片文件夹、“docx”是文档文件夹、“completed”是输出文件夹。图片文件夹和文档文件夹里的文件名是对应的。如下:
picture文件夹
1.jpg
2.png
docx文件夹
1.docx
2.docx
completed文件夹
批处理是把图片导入到相同文件名的文档后,再把文档保存到completed文件夹里。现在每张图片的大小是3M左右,图片很清晰,只是尺寸有点长,在批量导入word后发现整个文档的大小也只有400KB左右 ,即便把文档保存为网页查看里面的图片也只有几百kb,所以图片被压缩了。那么图片导入word如何避免被压缩呢,最好导入的图片的宽度能适配文档的正文宽度。有的说把doc.InlineShapes.AddPicture('%%f', $false, $true)的第三个值改为false,但修改后生成的文档里没有图片。请教各位了~~~~~~
代码如下:- @echo off
- setlocal enabledelayedexpansion
-
- set "picture_path=C:\Users\X3S2\Desktop\test\picture"
- set "docx_path=C:\Users\X3S2\Desktop\test\docx"
- set "output_path=C:\Users\X3S2\Desktop\test\completed"
-
- for /r "%picture_path%" %%f in (*.jpg, *.jpeg, *.png, *.bmp) do (
- set "filename=%%~nf"
- set "word_path=!docx_path!\!filename!.docx"
-
- start winword.exe "!word_path!" /q
- ping -n 2 localhost > nul 1>nul 2>nul
- if not errorlevel 1 (
- powershell "$word = New-Object -ComObject Word.Application;$doc = $word.Documents.Open('!word_path!', $false, $true, $false);$selection = $word.Selection;$selection.EndKey(6);$selection.TypeParagraph();$inlineShape = $doc.InlineShapes.AddPicture('%%f', $false, $true);$inlineShape.Range.InsertParagraphAfter();$doc.SaveAs('!output_path!\!filename!.docx');$doc.Close();$word.Quit();"
- )
- )
- echo completely!
- taskkill /F /IM WINWORD.EXE > nul 2>&1
复制代码
|