Ich habe versucht, einem Freund zu helfen, bei dem einige Daten wiederhergestellt wurden, aber die Metadaten gingen verloren. Da es sich meistens um Artikel oder Rezepte handelt, glaubt sie, dass der Titel oder die erste Textzeile für einen Dateinamen ausreichen wird.
Ich wollte versuchen, ein Powershell-Skript zu verwenden, um ... auf die Dateien zuzugreifen / sie zu lesen, die erste Zeile zu greifen (wenn möglich eine Länge von Zeichen zu definieren) und sie dann umzubenennen. Wie ... lesen Sie die ersten 10 Zeichen und benennen Sie die Datei, die.
Ich habe dieses Skript gefunden, das für TXT-Dateien zu sein scheint. Ist es überhaupt möglich, es für .doc zu überarbeiten und dann den Teil über O zu entfernen und es einfach lesen zu lassen, was auch immer die erste Zeile ist, und mit den ersten 10 gelesenen Zeichen umzubenennen?
Jede Hilfe wäre sehr dankbar. (Entschuldigung, wenn ich das Skript falsch geschrieben habe)
$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."
}
}
Ich habe auch dieses Skript gefunden. Das ist mehr .doc konzentriert. Alles, was ich brauche, ist ... lesen Sie die erste Textzeile und benennen Sie sie um (mit einer angemessenen Begrenzung der Zeichen, wie z. B. den ersten 10 Zeichen).
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
quelle
Antworten:
Kopieren Sie den folgenden Code und erstellen Sie ihn als Powershell-Skript, indem Sie eine Datei mit der Erweiterung .ps1 benennen (getestet mit Powershell 4 unter Windows 7 - überprüfen Sie Ihre Version von Powershell mit "get-host | Select-Object version" oder "$ PSVersionTable.PSVersion").
quelle