Roztřídění textu podle stanovených pravidel
Ahoj, snad pochopíte o co mi jde.
Dělám si takový archív, ukládal jsem si za několik let historii jedné konverzace z ICQ, takže jsem získal několik txt souborů, kde jsou všechny ty konverzace uloženy. Od začátku roku až po konec. Je toho materiálu hrozně moc a vypadá to takto:
--------------------------------------<-
A (12:48:50 1/01/2011)
"ukázkový text"
-------------------------------------->-
B (12:49:00 1/01/2011)
"ukázkový text"
--------------------------------------<-
A (12:49:08 1/01/2011)
"ukázkový text"
.
.
.
-------------------------------------->-
B (12:49:25 6/01/2011)
"ukázkový text"
--------------------------------------<-
A (12:49:32 6/01/2011)
"ukázkový text"
(Jména uživatelů jsem nahradil A a B)
Hledám nějaký program nebo fintu, která by mi ušetřila práci a dokázala tento celý texťák roztřídit na jednotlivá data, kdy byly konverzace vytvořeny. Takže by se nejlépe vytvořil nový txt soubor - název "1/01/2011" a tam byly jen konverzace z tohoto data. Poté další - "6/01/2011" atd..
Chci si ušetřit mnoho práce s tříděním. Také bych chtěl třeba hromadně vymazat některé nežádoucí prvky (např.-------------------------------------->-).
Děkuji vám za váš čas.
Takže udělám ti na to pomocný program.
Program vytvoří JEDEN Excelový dokument v csv.
csv si už následně setřídíš nejprve podle jednotlivých jmen a posléze podle datumu.
To snad zvládneš. a bude to vyhovovat kriteriím.
Tak tady je ten program:
http://pc.poradna.net/file/view/18302-createsingle document-exe
Musíš ho ale spustit jako správce, protože výsledný dokument bude chtít zapsat do: C:\document.csv
Otevřu program jako správce, nalistuju adresář - místní disk c - objeví se hláška:
...Proces nemůže přistupovat k souboru c:\document.csv, protože soubor je využíván jiným procesem.
Ok, zvolím adresář, kde najdu txt soubor a spustím vytvořený soubor document.csv. Historie se přesunula do souboru, ale nevím, jak to teď setřídím. Je to tam takové poházené, nevyznám se v tom.
Jestliže jsi uvedl pravdivé údaje, měl bys mít v dokumentu něco takového:
následně vybereš:
A nastavíš tato pravidla seřazení:
Nyní bys měl mít dokumet s přehlednou konverzací, seřazen podle jmen.
Ta hláška o tom, že proces nemůže přistupovat... je protože jsi měl ten dokument otevřený v Excelu.
Když ten program spouštíš nesmíš mít otevřený žádný soubor v Excelu !
Předpokladem je též, že adresář, který nalistuješ obsahuje jen soubory s historií.
Tj . nejsou tam žádné jiné nebo dokonce binární soubory.
Ajajaj. Ale kde je samotná konverzace ?!
Na tu jsem totiž zapomněl !
Takže verze prográmku 2, která nezapomněla na konverzaci !
Stahni si teda verzi 2 a postup výše zůstává stejný, jen přibyde sloupec D s obsahem konverzace
Protože se jedná o konverzaci v ICQ tak komunikuješ vždy s někým.
Takže seřazení by mělo vypadat TEDA následovně:
... to bude drahé.....
to uložení do c:\ je nešťastný. myslíš že by to reagovalo na shell:Common Desktop, shell:Desktop, %USERPROFILE%\Desktop ?
Takto. Ve hře je příliš mnoho proměnných.
To s %USERPROFILE%\Desktop nefunguje.
Přesněji nefunguje:
C# Má na toto jinou vychytávku:
Takže tebou zamýšlená upravená část pro zápis souboru by vypadala legitimně takhle:
Ovšem tento způsob řešení by se opět nevyhl nutnosti spouštět prográmek jako administrátor. Proč?
Protože disk C (respektive disk se systémem Windows) je privilegovaný v tom, že programy již nesmějí zapisovat jinam, než z kama jsou spouštěny.
Toto by šlo opět obejít tím, že by se spustil prográmek z plochy (a zapisoval by tedy do stejného umístění, kde se nachází).
A kdo to zaručí?
Ovšem z časového a praktického důvodu jsem se rozhodl pro disk c:\Document.csv disk C je totiž v systémech Windows přítomen vždy, což o ostatních není pravidlem.
Nejserióznější varianta by byla zobrazit saveFileDialog, kde by si uživatel sám nalistoval cílové umístění, ale to už se mi tam nechtělo přidělávat.
Toto samozrejme nie je pravda... Pod Win7 nemáš ako user právo zapisovať do systémových zložiek (pochopiteľne) a ani do root pevného disku - čiže c:\
Avšak ak si užívateľ vytvorí na disku c: v root ľubovoľnú zložku napr. c:\aaa, potom môže kľudne zapisovať do c:\aaa\*.*.
To len pre upresnenie...
Ano. Správně upřesnění.
Nehádám se
To bych mu tam musel na disku C vytvořit nějaký adresář v tom případě a zapsat to až do něho.
Mimochodem všimli jste si, že všechny tyto postupy jsou vždy složitější ?
Neviem ako dlho programuješ a čo konkrétne programuješ, ale %USERPROFILE% to "istí"...
Len sa prosím nezaraďuj medzi "kinder-programátorov", čo nevedia ako funguje OS...
pme má krutou pravdu. krutou pravdu administrátora. používej proměnné a ne přímé cesty, dokonce do root c:. tam je zavaděč a nejvyšší cesta win. kdokoliv odkáže, je nepřítel.
tak tu vychytávku použij, msdn.microsoft.com, z časového hlediska se to nevyplatí- jen nenasereš systém. mám ti vyprávět jak po vypuštění w7 zdrhlo celý google, maxthon, xnview ne (ten si nechal šablony virtualizovat)po osmileté hrozbě dodržování zápisu, tam kam se má? oni zapisovaly do program files svou konfiguraci- zdrhly zákeřně do profilu. vypadalo to jako útěk na horu čarodějnic. se seznamem bych mohl pokračovat do umrtvení.
Omlouvám se, ale myslím, že mi to nepomůže. Možná jsem ten problém špatně vysvětlil. Radši to vysvětlím ještě jednou.
Ukládal jsem si historii konverzace z Qipu (popř. ICQ), jedná se pouze o jeden kontakt, takže jen já (jako A) a ta druhá strana (jako B). Nikdo další.
Takže mám např. celý rok 2012 jako jeden velký txt soubor (od 1.1.2012 do 31.12.2012) s historií konverzace.
Viz screen:
Bez_n_zvukk.png
Co je mým cílem: vytvořím si složku 2012 - v ní budou složky Leden, Únor, Březen,atd.. a tam bude jako jeden den v měsíci jeden txt soubor. Takže chci z toho jednoho velkého txt souboru, kde bude historie mezi A a B za celý rok 2012 získat cca 365 txt souborů. Jeden txt soubor jako jeden den. (365 jich ve skutečnosti nebude, každý den jsme si nepsali).
Chci tedy, aby nějaký program zjistil podle toho data (12:49:08 1/01/2011), který den to byl a roztřídil konverzaci do jednotlivých dnů.
Viz screen:
postimg.org
Nepůjde-li to, smířím se s tím. Děkuji mnohokrát za vaši snahu.
Tak reaguji taky schválně až po několika dnech.
Někteří tady jenom píší, ale nic nedělají.
Kdybych byl jízlivý, tak napíši vyrypují, i když pravdu mají.
Anonymnímu tazateli nestojím ani za to, aby reagoval na mě.
Lepší je hledat ve vytvořeném documentu, než ve filesystému podle názvu, ale budiž:
Předhoď prográmku celý velký, vytvořený a seřazený dokument.csv, který ti vytvořil předchozí prográmek.
Měl by vytvořit pro každý den Excelový csv dokument s konverzací.
v pořádku, nezlob se uštěpačnosti. asi bych tě neměl nasírat výpisem ze sua (podařilo se ti trefit i jeden mandatory labels)
CreateDirectoryW: Directory (\Device\HarddiskVolume2\Users) only grants requested 'FILE_ADD_SUBDIRECTORY' to 'NT AUTHORITY\SYSTEM, BUILTIN\Administrators'
prostě nepiš tam kam nemáš, piš proměnné systému, user ocení zápis na plochu. snad nebudeš trucovat dlouho.
máš to kostrbatý.
Ano, nebyl jsem tu několik dnů, omlouvám se všem, koho to urazilo.
Předhodil jsem novému prográmku celý velký soubor, který jsem získal ze staršího prográmku (nazveme ho č.1), ale úspěch žádný.
Prográmek č.1 mi vytvořil jakýsi chaos, viz screen. s20.postimg.org
a prográmek č.2 si s tím neporadí a výsledek vypadá nezměněný.
Asi bych to vzdal, ať se tu ještě zbytečně nehádáte.
Pisi z mobilu naslepo.
Tak uz to chodi, kdyz nejsou k dispozici cela data a pise se to naslepo. jako rozdelovac byla pouzita mezera, ale buh vi, jestli se nenachazi i ve jmenu atd... tedy misto A ci B atd....