

Jak zakódovat název souboru/adresáře aneb nápady šíleného byrokrata
Nevíte, zda existuje nějaký SW, který by mně zakódoval název souboru/adresáře (složky) tak, abych jej mohl použít např. jako číslo jednací (tzn. v přijatelné délce) a později se rozbalením tohoto kódu se dostal k dotyčnému souboru/adresáři?
Zkoušel jsem používat ShortFileName, ale u mých bestiálně vnořovaných adresářů má i tento větší textovou délku než průměrný historický román A. Jiráska.
Musí to být zakódované tím myslím tajné?
Nebo po naučení se "systému značení" pochopitelné pro každého?
Ne, nemusí to být tajné. Naopak budu raději, když to bude co nejpochopitelnější.
Zkus prosim uvest nejaky priklad
Mám třeba soubor, který má název s touto kompletní cestou:
C:\Documents and Settings\UserX\Local Settings\Data aplikací\Microsoft\Microsoft SQL Server\90\Tools\ShellSEM\1033\ExpansionsXML.xml
a jako ShortFileName vypadá takto:
C:\DOCUME~1\User1\LOCALS~1\DATAAP~1\MICROS~1\MICROS ~1\90\Tools\ShellSEM\1033\EXPANS~1.XML
Potřeboval bych program, kterým bych si třeba v TC kliknul pravou myší na soubor ExpansionsXML.xml a on by mi ten název i s celou cestou nějak označil, např. 15947k6f4A45afd.
Já bych takhle vygenerovaný název použil jako např. čj. a když bych příště na něj narazil, vzal bych jej do schránky a v onom hypotetickém programu by se mi název dekódoval a já bych věděl, kam mám jít ten soubor hledat.
Z takto zkraceneho nazvu uz puvodni jmeno nedekodujes.
Program by musel udrzovat databazi puvodnich a vygenerovanych cest. Pak by to bylo mozne - v programu najit a klepnout na soubor a dostal by ses k nemu primo.
Navic bys mohl tyto kody tisknout na spisy i jako carove kody a pak pouzivat ctecku...
Algoritmus MD5 by použít šel, z tvého soubory by vzniklo tohle:
6aa4f84a07f59d3b20e80d8b6aece5dc
popř. by se dalo pouzit CRC32, pak by byl vysledek kratsi a nebo proste pouzit nejake obycejne cislovani, ve kterem by treba prvni znak byl pismenko disku a dalsi uz by bylo treba 7-mi místné číslo.
Ale jak pisu, program by si musel udrzovat zaznamy o tech souborech.
Ty záznamy by mi vůbec nevadily; pokusím se to naštudovat.
Na tom neni co na studovani. Nevim, jestli takovy program je, ale nebyl by problem jej napsat.
Fungovani by mohlo byt 2 zpusoby:
1. program projde disk a vsem souborum priradi zkratku. Pak by musela byt funkce na aktualizaci. Tohle je slozitejsi na napsani.
2. program vrati zkratku pro vybrany soubor a zapamatuje si jej. Pak bude schopny vretit ze zkratky zase soubor. Ale bude to fungovat jen pro soubory, ktere programem prozenes.
Řekl bych, že chceš po systému zázraky.
----
Načrtnu ti jiné řešení:
Přečti si toto http://kmochna.blogspot.com/2008/10/systmov-zkratky -trochu-jinak.html
Otevřeš si regedit, najedeš si na uvedenou cestu, dáš novou hodnotu.
Název Hovno, hodnota C:\Documents and Settings\UserX\Local Settings\Data aplikací\Microsoft\Microsoft SQL Server\90\Tools\ShellSEM\1033
zavřeš regedit a teď můžeš zadat kamkoliv kde jde psát adresa (U TC netuším, ale pokud to ctí systém, musí umět) shell:Hovno\ExpansionsXML.xml
a seš tam.
Výhoda: nemusíš si pamatovat cestu. Funguje i v komand lajně, skriptech, dávkáčích.
---
Použití systémových proměnných nedoporučuji (set path) - systém si totiž načítá seznam do paměti.
----
Výše uvedené řešení je v registry v Current user (jen pro tebe), pokud to chceš aplikovat i jinde, vyexportuj uvedenou větev a na novém PC přidej kliknutím.
Pokud jsem Tě pochopil, tak by se v tomto případě jednalo o systémové soubory.
Já jsem ale dost nešikovně zvolil příklad; ve skutečnosti se mi jedná o dokumenty na datovém disku.
Nene, tady si zkrátíš jakoukoliv cestu do jediného slova.
D:\dokumenty\bordel\prebrat\nasmazani\aaa\ bbb\1245\temp\vypaleno\filmy\porno - zkrátíš na třeba shell:porno
a soubor spustíš takto shell:porno\aaa.avi
Jenže já bych takhle potřeboval zakódovat asi 30.000 dokumentů.
znamená to prakticky i 30.000 adresářových cest, nebo jenom nějakých 10-20?
edit: aha, jak čtu níže, je to poněkud živý (živelný) proces.
A preco si uz ten subor nenazves tym "cislom jednacim"?
Mozes si urobit linky (zastupcov) na subory, a zastupcov si nazvat ako chces (napr. 000000001.lnk, 000000002.lnk atd). Zastupcov mozes potom mat v jednej zlozke pekne pohromade, a zastupca moze odkazovat aj na sialeny nazov kdekolvek na disku, poklepanim na zastupcu by sa mal otvorit povodny subor.
Riziko je ze ked presunies alebo premenujes povodny subor, tak samozrejme zastupca prestane fungovat.
Ak to je vela suborov tak na vytvorenie zastupcov by bolo treba urobit nejaky bat alebo skript, tie subory su kde? Je to v jednom adresarovom strome na disku, alebo ako co su to za subory? nejake dokumenty?
Ty soubory (hlavně typu *.doc, *.pdf, *.xls, *.txt,*.htm) jsou na síťovém (RAID) disku v jednom adresáři, jenž se následně dělí na tisíce dalších podadresářů, které ale v průběhu řešení toho či onoho případu různě přejmenovávám, přesouvám atp.
Tudíž se domnívám, že jediné možné řešení je to od JaFiho s onou pravidelnou aktualizací celého adresáře...
Pokud budeš přesouvat dokumenty, tak ti pak nebude souhlasit vygenerovaný kód. Při aktualizaci adresáře se díky přesunutí dokumentu vygeneruje pro dokument jiný kód - součástí kódu je i cesta.
Neco podobného mám v práci na serveru.
Jde o o víc jak 123 000 souborů a přes 41 000 složek. Soubory jsou v slozkach podle: rok\senat\cislo.
Takze napr. dokument vyzva.doc od znacky 2C 125/2008 je ulozeny jako:
\2008\2C\125\vyzva.doc
Spravuje to informační systém, takže se k dokumentům leze ze spisové značky v IS a ne přímo
No dobre ale ked tie subory presuvas, tak musia byt jednoznacne identifikovatelne (kazdy ma iny nazov)? Lebo ak by si mal 2subory s rovnakym nazvom tak to nezvladne ani program od JaFiho (predstav si ze by si presunul 2 subory ktore mali rovnaky nazov a potom ten program nemoze vediet ze ktory subor z tych dvoch sa presunul do ktorej novej zlozky).
Z toho mi vyplyva ze najlepsie bude pouzivat uz priamo v nazve dokumentu to "cislo jednaci" (aspon ako cast nazvu) a potom nie je problem urobit program alebo script ktory pravidelne vsetky dokumeny prehlada a vygeneruje novych zastupcov a starych zmaze apod.
Je nutne to riesit na konkretny pripad musis vysvetlit k comu sa vztahuje to cislo jednaci, k jednemu alebo viac suborom, ten kto ti bude robit nejaky program alebo skript musi vidiet a pochopit tvoju strukturu zloziek a jednacich cisel atd.
Bez automatizace to ale nezvládnu, 30k souborů bych růčo nepřejmenoval.
To se prostě nedá. Jak psal Honza nahoře, v jeho případě se pravděpodobně jedná o soudní spisy; u mě je to jinak, zatím jediná logika trochu vyplývá ze struktury a organizace adresářů. Jednotlivé případy spolu mohou být nějak souvztažné, takže já to nemohu organizovat ani podle subjektů ale ani podle věcí či čísel. Proto bych chtěl mít každý soubor a adresář označený jedinečným a nezaměnitelným způsobem, ze kterého by vyplynulo, kde se právě nachází.
Ale jak vidím, asi to nepůjde...
Pokud dokážeš definovat, co s dokumenty děláš, jak moc často je přesouváš z adresáře do adresáře atd. tak by se něco vymyslet dalo.
Ale je třeba vědět, co a jak se mění.
to sa da, keby si tie subory nepresuval. Akonahle nieco presunies tak to uz musi dostat nove cislo, pretoze "zatím jediná logika trochu vyplývá ze struktury a organizace adresářů" a tym padom ked nieco presunies tak uz je to nieco uplne ine a musi mat ine cislo :) Tak? Alebo stale nechapem.
P.S. da sa aj hromadne premenovat subory - nazov domplnit o nejake tie ID-cisla, tak ze kazdy by mal v nazve jedinecne ID, nejakym bat alebo scriptom. Jasne ze to nebudes menit rucne. Len neviem ze ci by ti cislo v nazve suboru na nieco bolo.
Asi to bude problém psychologický.
Vykašlat se prostě na 16 let budovanou strukturu adresářů a nechat jenom program generovat a přiřazovat názvy souborům a ty adresáře neměnit a soubory nepřejmenovávat.
Pokud tohle zajistíš - nepřesouvání a nepřejmenováváni souboru, tak se s tím dá dál pracovat.
To nejhorší, co se může stát je, že zadáš kód a program ti řekne, že takový kód (dokument) nemá.
A pořád zbývá možnost ten dokument najít podle klíčových slov např. programem Archivarius 3000 (a navíc původně vygenerované čj. bude v textovém obsahu souboru).