Autore Topic: Cartella locale che non visualizza tutti i messaggi  (Letto 350 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Cartella locale che non visualizza tutti i messaggi
« il: 31 Marzo 2024 09:22:28 »
Ho una cartella locale di grosse dimensioni (11 e passa GB). Thunderbird ha iniziato a mandarmi messaggi dicendo che non riusciva a compattarla. Ho tentato la "riparazione" ma dopo averla eseguita da circa 65mila messaggi che avevo me ne fa vedere solo circa 7mila. Ho ripetuto la riparazione più volte, cancellando il relativo file .msf ma non cambia nulla...

Offline filigrana

  • Post: 411
Re:Cartella locale che non visualizza tutti i messaggi
« Risposta #1 il: 31 Marzo 2024 14:42:27 »
ciao, il problema mi sembra piuttosto complesso...

intanto fai una copia del profilo in cartella sicura come scritto per esempio qui https://support.mozilla.org/it/kb/esportare-profilo-thunderbird o qui https://support.mozilla.org/it/kb/profili-thunderbird#w_effettuare-una-copia-di-sicurezza-del-profilo
poi prova a vedere se può essere utile questo thread https://forum.mozillaitalia.org/index.php?topic=78013.0

l' ubicazione fisica del file contenente tutte le mail di quella cartella la trovi in seleziona cartella - proprietà - posizione ma ci sarai già arrivato se hai già cancellato il relativo file.msf...
se la cartella locale si chiama "posta", in quella posizione avrai un file nominato "posta" senza estensione...quello è un gigantesco file di testo di 11 GB contenente tutte le mail, accodate una dietro l' altra in un ordine che ignoro...

se TB ti vede 7000 mail, probabilmente la cartella è corrotta e quel mega file contiene solo 7000 mail, le altre sono perse...
per curiosità ho dato un' occhiata ad un file analogo di una cartella locale mia che contiene solo email e ho visto che, contenendo 91 mail, compare 91 volte la stringa
Codice: [Seleziona]
From - che delimita l' inizio di ciascuna mail...
ho fatto copia/incolla del testo racchiuso tra la prima e la seconda occorrenza di quella stringa e l' ho salvato in un file.eml, poi l' ho aperto con il TB e si è aperta la mail...
in teoria quindi, se ripeto 91 volte il procedimento, otterrò 91 files.eml che posso importare in TB come voglio...

nel tuo caso, o ricorri ad un recovery tool oppure cerchi di automatizzare il procedimento di cui sopra splittando il mega file ogni volta che viene incontrata la stringa "From - " in diverse migliaia di files.eml, sperando che il risultato fornisca email corrette...
intanto dovresti contare le occorrenze di quella stringa nel mega file, perchè se sono 7000 vuol dire che le altre sono finite nel crash e quindi se non hai un backup salvato sono irrimediabilmente perse...

come fare...ci penso su...
« Ultima modifica: 01 Aprile 2024 11:05:59 da filigrana »

Offline filigrana

  • Post: 411
Re:Cartella locale che non visualizza tutti i messaggi
« Risposta #2 il: 01 Aprile 2024 01:47:00 »
allora, ho chiesto aiuto a gente e mi hanno dato questa risposta...
Citazione
The script creates new files in the same directory as the original file, naming them with a base name followed by a sequence number and the .txt extension (e.g., splitFile_1.txt, splitFile_2.txt, etc.).

powershell
Copy code
Codice: [Seleziona]
# Define your parameters
$filePath = "C:\path\to\your\file.txt" # Path to your huge text file
$delimiter = "string" # Your delimiter
$baseOutputPath = "C:\path\to\output\splitFile_" # Base path and filename for output files

# Initialize variables
$fileCounter = 1
$currentContent = @()

# Read the file line by line
Get-Content -Path $filePath | ForEach-Object {
if ($_ -match $delimiter -and $currentContent.Count -gt 0) {
# Output the current content to a file
$currentContent | Out-File -FilePath ($baseOutputPath + $fileCounter + ".txt")
# Increment the file counter and reset the current content
$fileCounter++
$currentContent = @()
}
$currentContent += $_
}

# Don't forget to output the last chunk if it exists
if ($currentContent.Count -gt 0) {
$currentContent | Out-File -FilePath ($baseOutputPath + $fileCounter + ".txt")
}
Citazione
Here's how to use this script:

Replace $filePath with the full path to your text file.
Change $delimiter to the string you're using to split the files (it appears you're using "string" as your delimiter).
Set $baseOutputPath to the directory and base filename where you want to save the split files. The script will append numbers to this base name to create the individual filenames.
This script works by reading each line of the input file. Whenever it encounters the delimiter (indicating the start of a new section), it writes the accumulated lines to a new file and starts collecting lines afresh for the next file.

Remember to adjust the file paths and delimiter according to your specific needs before running the script.
come ha detto il ragazzo, al posto di
C:\path\to\your\file.txt
inserisci la full path del file di 11 GB contenente le mail (ovviamente se è nel disco Z: metti Z: al posto di C:)
al posto di
C:\path\to\output\splitFile_
metti la directory e il nome base dei files di output (lascia il "_")
al posto di
string
inserisci
"From - " (From + spazio + - + spazio) senza virgolette, però lascia quelle dello script...
rinomina lo script così modificato in, mettiamo, split.ps1
metti il file delle email e lo script in una cartella idonea in un disco con mooooooooooolto spazio, mettiamo F:\temp
esegui windows power shell
esegui il comando
cd F:\temp
la console mostrerà
PS F:\temp>
a questo punto inserisci il comando
.\split.ps1

lo script inizia a lavorare, ci metterà del tempo, nella cartella che hai messo al posto di
C:\path\to\output\
ti creerà migliaia di files splitFile_n.txt, dove al posto di n c' è il progressivo delle mail recuperate...

al posto di "txt" nello script puoi già sostituire "eml", così hai già le mail senza doverle rinominare in massa...
ho testato lo script su un mio file di 3,7 MB e funziona alla perfezione...
divertiti...
« Ultima modifica: 01 Aprile 2024 01:52:33 da filigrana »

0 Utenti e 1 Visitatore stanno visualizzando questo topic.