パワーシェルを使ってMicrosoft Excel などのオフィスのファイルの作成者を変更するバッチファイル

2024年12月3日

バッチファイル

壊してしまう可能性もあるため元のファイルは保存しておいてください

echo e %*
:: @pwsh -NoProfile -Command  "& (Invoke-Expression -Command ('{' + (Get-Content %~f0 -Encoding Shift-JIS | Where-Object {$_.readcount -gt 9} | Out-String) + '}'))" %*
::
@powershell -Command "& (Invoke-Expression -Command ('{' + (Get-Content %~f0 | Where-Object {$_.readcount -gt 9} | Out-String) + '}'))" %*
timeout /t 55 & goto :eof




# PowerShellƒXƒNƒŠƒvƒg - Excelƒtƒ@ƒCƒ‹‚̍쐬ŽÒ‚ƍXVŽÒ‚ð•ÏX
$excelFilePath = 'D:\data2\eightban-Font-Barcode-JAN-Regular\INDEX.xlsx'
$tempFolder = 'y:\tempFolder'
$excelFilePath5 = 'y:\Value.xlsx'

# ˆêŽžƒtƒHƒ‹ƒ_‚ª‘¶Ý‚·‚éê‡‚͍폜‚µAV‚½‚ɍ쐬
if (Test-Path $tempFolder) { Remove-Item -Path $tempFolder -Recurse -Force }
New-Item -ItemType Directory -Path $tempFolder

# Excelƒtƒ@ƒCƒ‹‚ðˆêŽžƒtƒHƒ‹ƒ_‚ɃRƒs[‚µ‚Ä.zipzipzipzipzipzipzipzipzipzipzipzipzipzipzipzip‚ɃŠƒl[ƒ€
$tempZipFile = Join-Path -Path $tempFolder -ChildPath 'temp.zip'
Copy-Item -Path $excelFilePath -Destination $tempZipFile

# ZIPƒtƒ@ƒCƒ‹‚ð“WŠJ‚µAcore.xml‚̂ݕҏW
Expand-Archive -Path $tempZipFile -DestinationPath $tempFolder -Force

# core.xmlƒtƒ@ƒCƒ‹‚̃pƒX‚ðÝ’è
$coreXmlPath = Join-Path -Path $tempFolder -ChildPath 'docProps\core.xml'

# core.xmlƒtƒ@ƒCƒ‹‚̓ǂݍž‚݂ƕҏW
[xml]$xml = Get-Content -Path $coreXmlPath -Raw
$xml.coreProperties.creator = 'eightban'
$xml.coreProperties.lastModifiedBy = 'eightban'

# •ÒW“à—e‚ð•Û‘¶
$xml.Save($coreXmlPath)

# XV‚·‚éƒtƒ@ƒCƒ‹‚Ì‚Ý‚ðZIP‚ɒljÁ
Add-Type -AssemblyName 'System.IO.Compression.FileSystem'
$zipToOpen = [System.IO.Compression.ZipFile]::Open($tempZipFile, [System.IO.Compression.ZipArchiveMode]::Update)
$entry = $zipToOpen.GetEntry('docProps/core.xml')
if ($entry) { $entry.Delete() }  # Šù‘¶‚̃Gƒ“ƒgƒŠ‚ðíœ‚µ‚Ä‚©‚ç’ljÁ
[System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile($zipToOpen, $coreXmlPath, 'docProps/core.xml')
$zipToOpen.Dispose()

# XV‚µ‚½ZIPƒtƒ@ƒCƒ‹‚ð.xlsx‚É–ß‚·
Move-Item -Path $tempZipFile -Destination $excelFilePath5 -Force

# ˆêŽžƒtƒHƒ‹ƒ_‚ðíœ
#Remove-Item -Path $tempFolder -Recurse -Force

Write-Output 'Excelƒtƒ@ƒCƒ‹‚̍쐬ŽÒ‚ƍXVŽÒ‚ð•ÏX‚µ‚Ü‚µ‚½B'