Už leta se vztekám s domácí tiskárnou, která některé dokumenty ořízne třeba v půlce posledního řádku, a vůbec mi vadí, že všude tlačí formát papíru Letter, když přece v ČR používáme A4. No jo, Hewlett-Packard, říkal jsem si, Amíci se vykašlali na pořádnou lokalizaci svého produktu, #fail #fail #fail.
Až jsem zjistil, že cca od roku 2010 všechny dokumenty ve Wordu zakládám na šabloně, která skutečně Letter používá. No jo, jsem fakt kardinální vůl.
Šablonu jsem tedy opravil a říkal jsem si, že by bylo dobré opravit i starší dokumenty, protože občas nějaký tisknu a vztekal bych se znovu a znovu. Dal jsem tomu tedy chvíli času a výsledkem je PowerShell skript, který je tak roztomile krátký, že se o něj musím podělit:
param(
[parameter(position=0)]
[string] $Path
)
$docFiles = (Get-ChildItem $Path -Include *.docx,*.doc -Recurse)
$word = New-Object -com Word.Application
foreach ($docFile in $docFiles) {
$doc = $word.Documents.Open($docFile.FullName)
$doc.PageSetup.PaperSize = [Microsoft.Office.Interop.Word.WdPaperSize]::wdPaperA4
$doc.Save()
$doc.Close()
}
$word.Quit()
Možná se někomu bude hodit přesně tohle, ale hlavně si všimněte, co všechno a na jak málo řádcích se dá s PowerShellem udělat. Mám tu věcičku rád.

PowerShell je skutečně krásná věcička!
PS: HP většinou instaluje ovladače dle jazyka systému a dle tohoto volí i nejen jazyk, kterým komunikuje, ale i mění výchozí systémový formát stránky pro tisk. Takže na anglických Windows se formát změní na Letter a na českých na A4. Řešením je dočasně přepnout jazyk systému při instalaci ovladačů.
Dobrý tip, snad si ho do příště zapamatuju :)
Pěkný skript, ale jak se k němu dojde? Je někde nějaká dokumentace?
Mohl by to někdo z druhé strany barikády porovnat s AppleScriptem? Mám totiž dojem, že tam to je pořešené nějak víc systémově a ovládat jde každá aplikace, zatímco v MS světě jen ty, které s tím předem počítají (tj. typicky jen MS produkty)
Dobrá poznámka a trochu záměrně jsem publikoval až výsledný skript, který je elegantní, na rozdíl od procesu jeho tvorby :) Ohledně dokumentace existují dvě zprávy, jedna dobrá – je to na MSDN, a jedna špatná – je to na MSDN. Takže se člověk musí prodírat něčím takovým, ale v kombinaci se Stack Overflow se to dá.
Příklad ze světa Apple by mě taky zajímal, protože je pravda, že na Windowsech se dělá podpora per-app. Většina věcí od MS skriptovatelných je, většina ostatních věcí není (nebo aspoň ne nijak přímočaře).