Bir sürü veriyi toparlayan bir arkadaşa yardım etmeye çalışıyordum, ancak meta veriler kayboldu. Çoğu makale veya tarif olduğu için, metnin başlığının ya da ilk satırının ya da bir kısmının bir dosya adı için yeterince iyi olacağına inanıyor.
Dosyalara erişmek / okumak, bir ilk satırı kapmak (mümkünse bir karakter uzunluğu tanımlamak) ve sonra yeniden adlandırmak için bir powershell betiği kullanmayı denemek istedim. Gibi ... ilk 10 karakteri oku ve o dosyayı yeniden adlandır.
.Txt dosyaları için görünen bu betiği buldum. .Doc için yeniden işleme koymak ve sonra O ile ilgili kısmı ortadan kaldırmak ve ilk satırın ne olduğunu okumak ve ilk 10 karakterin okunması ile yeniden adlandırmak mümkün mü?
Herhangi bir yardım çok takdir edilecektir. (betiğin gönderilmesini alamazsam özür dilerim)
$myFolderFullOfTextFiles = 'C:\recoveredDocs'
$linesToReadInEachTextFile = 5
$myTextFiles = Get-ChildItem -Path $myFolderFullOfTextFiles
foreach( $textFile in $myTextFiles )
{
$newName = ''
foreach( $line in $(Get-Content -Path $textFile.FullName -Head $linesToReadInEachTextFile) )
{
if( $line -like 'O*' )
{
$newName = $textFile.DirectoryName + '\' + $line.Substring(0,6) + '.txt'
}
}
try
{
Write-Host $newName
Rename-Item -Path $textFile.FullName -NewName $newName
}
catch
{
Write-Host "Failed to rename $textFile."
}
}
Ayrıca bu senaryoyu da buldum. bu daha fazla odaklanmıştır. İhtiyacım olan tek şey ... ilk satırın ne olduğunu okumak, yeniden adlandırmak (ilk 10 karakter gibi karakterlerde bazı makul başlıklar ile).
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Open("C:\Scripts\Test.doc")
strText = objDoc.Paragraphs(1).Range.Text
arrText = Split(strText, vbTab)
intIndex = Ubound(arrText)
strUserName = arrText(intIndex)
arrUserName = Split(strUserName, " ")
intLength = Len(arrUserName(1))
strName = Left(arrUserName(1), intlength - 1)
strUserName = strName & ", " & arrUserName(0)
strText = objDoc.Paragraphs(2).Range.Text
arrText = Split(strText, vbTab)
intIndex = Ubound(arrText)
strDate = arrText(intIndex)
strDate = Replace(strDate, "/", "")
intLength = Len(strDate)
strDate = Left(strDate, intlength - 1)
strFileName = "C:\Scripts\" & strUserName & " " & strDate & ".doc"
objWord.Quit
Wscript.Sleep 5000
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "C:\Scripts\Test.doc", strFileName