Çoklu Word Belgesi Şifre Korumasını Kaldırma
-
Müridler,
Elimde düzenlemem gereken bin küsür civarında tek sayfalık word dokümanları var. Ancak hepsi şifreli. Şifreler aynı ve şifreyi de biliyorum. Bunların şifrelerini otomatik olarak kaldıracak bir batch script yada vb script bilen var mı?
Edit Büdüt:
Windows Powershell için şöyle bir script buldum. Henüz işe yaramadı üzerinde çalışıyorum.
$read_path = Read-Host("Source Path:")
$write_path = Read-Host("Destination Path (with trailing backslash!):")
$passwd = Read-Host("Type in the password:")
$counter=1
$WordObj = New-Object -ComObject Word.Application
foreach ($file in $count=Get-ChildItem $read_path -Filter *.doc)
{
$WordObj.Visible = $false
$WordDoc = $WordObj.Documents.Open($file.FullName, $null, $false, $null, $passwd, $passwd)
$WordDoc.Activate()
$WordDoc.Password=$null
$WordDoc.SaveAs($write_path+$file.Name)
$WordDoc.Close()
Write-Host("Finished: "+$counter+" of "+$count.Length)
$counter++
}
$WordObj.Application.Quit() -
Üstte paylaştığım kod işe yaramadı. Şöyle bir programcık buldum ama illa Office 2007 istiyor.
http://www.codeproject.com/Articles/35222/Bulk-Word-Protection-Utility
-
Document nesnesinden parolayı tamamen kaldırmak için ek bir iki işlem daha gerekiyor.
Bir kaç değişiklik yaptım, bunu dene.
$read_path = Read-Host("Source Path:") $write_path = Read-Host("Destination Path (with trailing backslash!):") $passwd = Read-Host("Type in the password:") $counter=1 $WordObj = New-Object -ComObject Word.Application foreach ($file in $count=Get-ChildItem $read_path -Filter *.doc) { $WordObj.Visible = $false $WordDoc = $WordObj.Documents.Open($file.FullName, $null, $false, $null, $passwd, $passwd) $WordDoc.Activate() $WordDoc.Password = "" $WordDoc.Protect(-1, $TRUE, $passwd) $WordDoc.SaveAs($write_path+$file.Name) $WordDoc.Close() Write-Host("Finished: "+$counter+" of "+$count.Length) $counter++ } $WordObj.Application.Quit()buzukatak tarafından 07/Ağu/14 20:53 tarihinde düzenlenmiştir -
Dostum sağol ilgin için. Şu şekilde hata veriyor:
Argument: '2' should be a System.Management.Automation.PSReferen
At C:\Forms\script.ps1:13 char:21
+ $WordDoc.Protect <<<< (-1, $TRUE, $passwd)
+ CategoryInfo : NotSpecified: (:) [], MethodExcept
+ FullyQualifiedErrorId : NonRefArgumentToRefParameterMsg -
Sıçayım powershell'e. Bende çalışıyor. Muhtemelen sürümle alakalıdır.
Ne varsa eskilerde var.
VBScript ile tek bir dosyadaki parolayı kaldıran şu örneği dene :
Option Explicit Const wdNoProtection = -1 Const parola = "123456" Const dosya = "C:\test.doc" Dim Word, Doc Set Word = CreateObject("Word.Application") Word.Visible = False Set Doc = Word.Documents.OpenNoRepairDialog(dosya,,,,parola) Doc.Password = "" Doc.Protect wdNoProtection, True, parola Doc.Save Doc.Close Set Doc = Nothing Word.Quit Set Word = Nothing -
Office 2013 ve Windows 7 64 Bit problemi yaşıyoruz sanıyorum... Bu da yemedi :(
-
Zande bunu yazdı
Office 2013 ve Windows 7 64 Bit problemi yaşıyoruz sanıyorum... Bu da yemedi :(
Yemedi derken? Hata? Şifrenin kalkmaması?
Ben Office 2013 32-bit, Windows 8.1 64-bit ile, dosya formatı olarak Word 97-2002, ve docx ile denemeler yaptım.
İstersen bana örnek bir dosya gönder, bakayım.
buzukatak tarafından 07/Ağu/14 21:56 tarihinde düzenlenmiştir -
Özelden yazışmalar sonucu aslında ihtiyacın, verilen örneklerdeki gibi belge korumasını kaldırmak değil, düzenleme kısıtlamalarını kaldırmak olduğu ortaya çıktı.
Örnek kod :
Option Explicit Const wdNormalView = 1 Const wdNoProtection = -1 Const parola = "123456" Const dosya = "C:\test.docx" Dim Word, Doc Set Word = CreateObject("Word.Application") Word.Visible = False Set Doc = Word.Documents.OpenNoRepairDialog(dosya,,False) If Doc.ActiveWindow.View <> wdNormalView Then Doc.ActiveWindow.View = wdNormalView End If If Doc.ProtectionType <> wdNoProtection Then Doc.Unprotect parola End If Doc.Save Doc.Close Set Doc = Nothing Word.Quit Set Word = Nothing -
Tesekkurler. Kod son derece sağlam çalışıyor.
