Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Jak automaticky upravit text?

Zdravim,

mam textovy soubory ve kterem mam asi 100 slov (co radek to slovo). Nedalo by se nejak zautomatizovat prevedeni vsech slov do tvaru:

poleSlov[X] = "mojeSlovo";

X - poradi slova (cislo od 0 do 99)
mojeslovo - je slovo ktere mam v textaku na Xtem radku

Diky MaSo.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
import java.io.*; public class vygenerujSoubor { public static void main( String [] args ) { int i =…
MaSo 18.05.2006 21:25
MaSo
Pokud jsi schopny programovat v Jave, mohl sis napsat jednoduchy JavaScript pro PSPad a pomoci nej p…
Jan Fiala 19.05.2006 06:02
Jan Fiala
Javu sice trochu umim, zato JavaScript mi nic nerika.;-) nový
MaSo 19.05.2006 12:43
MaSo
Prijimam Maslovu vyzvu :-) ============ a.bat ====================== echo SEZNAM SLOV > seznam.txt…
Ynd0r 18.05.2006 23:57
Ynd0r
Ak to robí to, čo to má robiť (teraz už nevládzem čítať, čo to vlastne robí :-|), tak by som to ešte…
los 19.05.2006 00:19
los
Chyba! call sa dá použiť len na volanie BAT súboru a tu sa môže použiť len goto. V každom prípade sa…
msx. 19.05.2006 06:21
msx.
chyba. keby si dal miesto call goto, tak tvrdo odskoci z for cyklu a uz sa nevrati. preto je vhodne…
IgorK 19.05.2006 08:19
IgorK
A čo je potom "return"?
msx. 19.05.2006 11:35
msx.
"return" je v basicu :))
Ynd0r 19.05.2006 11:49
Ynd0r
Ale to viem od nejakých 7 rokov. Myslel som to inak, hádam to bolo pochopiteľné.
msx. 19.05.2006 12:02
msx.
Ted te nechapu.. jak bys teda chtel dat do BATu "return"?
Ynd0r 19.05.2006 12:05
Ynd0r
Ako DOS zistí, že sa má vratiť do toho for?
msx. 19.05.2006 12:34
msx.
protoze CALL zavola davku BAT, provede ji, a po skonceni se vrati presne na to misto, odkud ji volal… nový
Ynd0r 19.05.2006 12:45
Ynd0r
když už, tak takto: echo SEZNAM SLOV > seznam.txt set poc=0 for /F %%s in (slova.txt) do (echo pole…
touchwood 19.05.2006 08:57
touchwood
OMG, takto ne, seskupením (asi) dochází k iniciaci dalšího shellu, kde proměnná "poc" je pokaždé zno…
touchwood 19.05.2006 09:20
touchwood
Určite s programovaním máš už nejaké skúsenosti. musíš teda vedieť, že kvalita programového kódu nes…
msx. 19.05.2006 12:04
msx.
to je ale teda kapitální blbost! Já sice už neprogramuju, ale efektivita kódu je svatý grál program… nový
touchwood 19.05.2006 15:41
touchwood
Veď na konci bolo:;-) nový
msx. 19.05.2006 18:42
msx.
Jak potom okomentujes moji verzi 2 dole ? (18:34) :-D nový
Ynd0r 19.05.2006 18:45
Ynd0r
tak na tomto presne som zatuhol aj ja, mal som to presne rovnako. :-/ mam zato, ze nedochadza k inic… nový
IgorK 19.05.2006 15:32
IgorK
ano, je to tak, je to psané i v helpu windows - proměnná je evaluována pouze jednou. MS jsou prostě… nový
touchwood 19.05.2006 15:39
touchwood
jj, tak to potes pan buh. :-) nastasie uz bill zistil, ze dobry shell je pre system podstatny a kone… nový
IgorK 19.05.2006 15:50
IgorK
Super, gratuluji! :-):beer: První funkční řešení. Já věděl že to jde vyřešit efektivně pomocí window… nový
Máslo 19.05.2006 16:12
Máslo
Pamatuje ještě někdo Nortonův be.exe ... tak to ma nejako obislo a pritom shell mam celkom rad. :-) nový
IgorK 19.05.2006 16:20
IgorK
:)) Diky BE.EXE ani ne, ale zato jsem se v mladi vyblbnul s 4DOSem.. nový
Ynd0r 19.05.2006 16:20
Ynd0r
Vlastne to jde i bez CALLu :i: : for /F "usebackq skip=2 tokens=1,2* delims=[]" %%i in (`find /v /n… nový
Ynd0r 19.05.2006 18:34
Ynd0r
Tak na to som už krátky. Pravdu povediac, vždy keď som chcel niečo urobiť, tak som siahol po univerz… nový
msx. 19.05.2006 18:49
msx.
tak toto uz vyzera dobre hardcore. ;-):beer: nový
IgorK 19.05.2006 19:33
IgorK
Jo FOR je úžasnej příkaz, však má taky pěkně dlouhou nápovědu :-) Moje srdce plesá při takovéhle je… nový
Máslo 19.05.2006 19:41
Máslo
...jsem si myslel, ze to prehlidnete... Dobre, pritvrdime: :)):x: echo @echo off>x.bat&for /f "skip… nový
Ynd0r 19.05.2006 22:46
Ynd0r
zapomněl jsi za sebou ještě ten x.bat smazat :-D]:) nový
touchwood 20.05.2006 08:42
touchwood
No, mel by si po sobe uklidit... takze verze 1.03 beta: echo @echo off>x.bat&(for /f "skip=2 tokens… nový
Ynd0r 20.05.2006 10:56
Ynd0r
tak toto vyzera este viac hardcore, ale efektivnost sa uz straca. :-D btw., vyzera, ze mas celkom do… nový
IgorK 20.05.2006 11:32
IgorK
Efektivnost ze se ztraci?:-D ...tak jeden efektivni batch (musi se jmenovat "Q.BAT" a je jenom na je… nový
Ynd0r 20.05.2006 20:32
Ynd0r
tak hod sem nick name, nech mozme niekedy pokecat cez PM. 8-) nový
IgorK 20.05.2006 22:39
IgorK
Ten animovaný GIF naľavo hore je tvoj avatar? Nemáš niečo také ale väčšie? Pekná animácia to je. Nem… nový
msx. 20.05.2006 20:36
msx.
jj, je to moj avatar. vacsie nemam nic, to so nasiel niekde na internete v sekcii avatars. mam este… nový
IgorK 20.05.2006 22:35
IgorK
To GIFko som si hodil do telefónu ako pozadie. Dobre to tam vyzerá, keďže je to malé a navyše ho nep… poslední
msx. 21.05.2006 00:18
msx.
import java.io.*;
 
public class vygenerujSoubor
{
  public static void main( String [] args )
  {
    int i = 0;
    String[] pomocne = new String [99];
    try
    {
       FileReader fro = new FileReader( "a.txt" );
       BufferedReader bro = new BufferedReader( fro );

       String stringFromFile = bro.readLine( );
       pomocne[0] = stringFromFile;
 
       	while( stringFromFile != null ) 
       	{
         	 i++;
         	 stringFromFile = bro.readLine();  
         	 pomocne[i] = stringFromFile;
       	}
 
       	bro.close( );
       	char b = '"';
       	Writer out = new FileWriter("b.txt");
       	for (int a = 0; a < pomocne.length; a++)
       	{
       		if (pomocne[a] != null)
                {
                      pomocne[a] = "poleSlov["+a+"] = "+b+pomocne[a]+b+";";
       	 	      out.write(pomocne[a]+"\n");
                }
     	}
        out.close();
     	
    }
 
    catch( FileNotFoundException filenotfoundexxption )
    {
     	System.out.println( "a.txt, does not exist" );
    }
 
    catch( IOException ioexception )
    {
      	ioexception.printStackTrace( );
    }
  }
}

Tak jsem to nakonec vyresil malym programkem v Javě. Diky vsem za snahu a hlavne tobe Javo! :)):))8-)

Ak to robí to, čo to má robiť (teraz už nevládzem čítať, čo to vlastne robí :-|), tak by som to ešte zmenil tak, aby to bolo len v jednom baťáku:

echo SEZNAM SLOV > seznam.txt
set poc=0
for /F %%s in (slova.txt) do call :b %%s
exit

:b
echo poleSlov[%poc%]="%1";>>seznam.txt
set /a poc+=1

protoze CALL zavola davku BAT, provede ji, a po skonceni se vrati presne na to misto, odkud ji volal.
navic CALL umoznuje pouzit navesti (viz losova uprava), takze se takhle da volat i konkretni misto v BATu.
a kdyz v CALLu vynechas nazev BATu a pouzijes jenom navesti, tak se vlastne vola znovu tentyz BAT, ze ktereho volas, akorat ze se spusti az od toho navesti... a az dobehne na konec, tak se vrati na puvodni misto a pokracuje.

krome toho pri volani CALL zrejme spusti volany BAT ve vnorenem shellu (pod aktualnim shellem), takze jsou z nej viditelne promenne z puvodniho BATu.

Určite s programovaním máš už nejaké skúsenosti. musíš teda vedieť, že kvalita programového kódu nespočíva v jeho krátkosti, ale v jeho prehľadnosti. Ten trošku dlhší kód je prehľadnejší a tvoj až príliš krátky, že to systém ohodnotil zhoršenou známkou za kvalitu.;-)

to je ale teda kapitální blbost!

Já sice už neprogramuju, ale efektivita kódu je svatý grál programování, to mi nikdo nevymluví. Nějaké "wirthovské" strukturování kódu je vhodné tak pro pojídače koláčů, takový triviální algoritmus není třeba rozepisovat na X řádků.

BTW, asi i proto jsou ty dnešní softy čím dál tím nenažranější :x:

Super, gratuluji! :-):beer: První funkční řešení. Já věděl že to jde vyřešit efektivně pomocí windows shellu, pár řádků kódu.

p.s. Pamatuje ještě někdo Nortonův be.exe (batch enhancer), který v časech DOSu umožňoval v dávkáčích tvořit pěkná menu, okna, barvičky, dokonce i melodie tam šla zahrát:-)

Jo FOR je úžasnej příkaz, však má taky pěkně dlouhou nápovědu :-)

Moje srdce plesá při takovéhle jednořádkové racionalizaci, zvláštní bod uděluji za `find /v /n "fuck ms" slova.txt`8-)

p.s. I když tohle už neodpovídá MaSovu zadání, index neběží od nuly ale od jedničky. Nicméně ten trik s použitím číslování z výstupu příkazu find oceňuji:!:

No, mel by si po sobe uklidit... takze verze 1.03 beta:

echo @echo off>x.bat&(for /f "skip=2 tokens=1,2* delims=][" %%x in ('find/v /n"fuck ms" slova.txt')do (echo set/a X=%%x-1>>x.bat&echo echo poleSlov[%%X%%]="%%y";>>x.bat))&x>seznam.txt&del x.bat

Changelog:
1.03
- vymaze po sobe smeti
- vyrazne zrychleni (az 20x)
:-D

Zpět do poradny Odpovědět na původní otázku Nahoru