Я пытался помочь другу, у которого была восстановлена куча данных, но метаданные были потеряны. Поскольку большинство из них - статьи или рецепты, она считает, что заголовок или первая строка текста будут достаточно хороши для имени файла.
Я хотел попробовать использовать скрипт powershell для ... доступа / чтения файлов, захвата первой строки (если возможно, определения длины символов) и затем переименования. Как ... прочитать первые 10 символов и переименовать файл, который.
Я нашел этот скрипт, который, кажется, для файлов .txt. Можно ли вообще переделать его для .doc, а затем исключить часть о O и просто прочитать ее, какой бы ни была первая строка, и переименовать, прочитав первые 10 символов?
Любая помощь будет принята с благодарностью. (извиняюсь, если я испортил пост сценария)
$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."
}
}
Я также нашел этот скрипт. который более .doc ориентирован. Все, что мне нужно, это ... читать любую первую строку текста, переименовывать ее (с некоторой разумной заглавностью на символы, такие как первые 10 символов).
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