upthewall
Vizitator
|
 |
« : Martie 16, 2006, 14:04:08 » |
|
Hey, uite nu am avut si eu ce face o juma de ora si m-am gandit ca asa ceva ar fi folositor. Scriptul asta pentru bash (adica merge doar pe linux) converteste testele din orice format (exemplu nume_problema.in15 si .ou15 ) in ceva de genul 0-Nume_Problema.in/.ok #!/bin/bash #RENAME TESTS, VERSION 1.3 #SCREW COPYRIGHT :P
base=`basename "$0"`
i_format=$1 files="*.*" if [ "$2" != "" ];then files="$2" fi if [ "$#" -lt 1 ] then echo "Usage: $base <Initial Test Format> [Directory]" echo "Format: %N - file name ( A-Z, a-z )" echo " %n - numerical file name ( A-Z, a-z, <<0-9>> )" echo " %E - extension ( a-z, A-Z ) -> won't be parsed" echo " %T - test number ( 0-9 )" echo " - - junk character ( anything but dot ); -* => more junk" echo "Example: $base %N.%E%T ... will transform to %T-%N.new extension" echo 'Dir. can be :dir1/dir2 ( can use trailing / ) ( DO NOT USE WILDCARDS )' echo 'Extension is extracted from file name, and is: ' echo '.in for .in found' echo '.ok for .ou, .ok found' echo 'Otherwise, file is not processed' exit fi
# format parsing... %N, %n, %T, -, ., and %E .................... replace_str='\2-\1' # name after test number? we'll see now ( %N/%n after %T ) n_after=`echo "$i_format" | sed 's/.*\(%T\).*\(%[Nn]\).*/\1\2/'` if [ "`echo $n_after|tr [a-z] [A-Z]`" == "%T%N" ]; then replace_str='\1-\2' fi sedcmd=`echo "$i_format" | sed 's/\\./\\\./' | sed 's/-/[^\\\.]/' | sed 's/%N/\\\([a-z]*\\\)/' | sed 's/%n/\\\([a-z0-9]*\\\)/' | sed 's/%E/[a-z]*/' | sed 's/%T/\\\([0-9]*\\\)/'` # finished parsing ..............................................
for file in `ls -1 $files` do if [ -f "$files/$file" ]; then #mv "$file" "$file2.$cumscheama$punctc" file_name=`basename $file` file_lower=`echo $file_name | tr [A-Z] [a-z]` # just the name, not the path exten=`echo $file_lower | sed 's/.*\.\([^\.]*\)$/\1/'` extension="" tt=`echo $exten | grep 'in'` if [ "$?" == "0" ]; then extension="in" else tt=`echo $exten | grep 'o[uk]'` if [ "$?" == "0" ]; then extension="ok" fi fi if [ "$extension" != "" ]; then command="s/$sedcmd/$replace_str\\.$extension/" new_file=`echo "$file_lower" | sed $command` if [ "$file" != "$new_file" ]; then echo "$file_name > $new_file" #file_path=`expr "$file" : '\(.*\/\)[^\/]*'` mv "$files/$file" "$files/$new_file" fi fi fi done
# END OF SCRIPT
btw, am pus versiunea 1.4 care stie si sa ii puna un nume ales de tine (prin -nume ... ), din teste de genul T10.in/.out  #!/bin/bash #RENAME TESTS, VERSION 1.4
base=`basename "$0"`
if [ "$#" -lt 1 ] then echo "Usage: $base <Initial Test Format> [-nume ...] [Directory]" echo "Format: %N - file name ( A-Z, a-z )" echo " %n - numerical file name ( A-Z, a-z, <<0-9>> )" echo " %E - extension ( a-z, A-Z ) -> won't be parsed" echo " %T - test number ( 0-9 )" echo " - - junk character ( anything but dot ); -* => more junk" echo "Example: $base %N.%E%T ... will transform to %T-%N.new extension" echo 'Dir. can be :dir1/dir2 ( can use trailing / ) ( DO NOT USE WILDCARDS )' echo 'Extension is extracted from file name, and is: ' echo '.in for .in found' echo '.ok for .ou, .ok found' echo 'Otherwise, file is not processed' exit fi
i_format=$1 files="*.*" fnume='\2' shift while [ "$1" != "" ]; do if [ "$1" != "-nume" ];then files="$2" else shift fnume="$1" fi shift done
# format parsing... %N, %n, %T, -, ., and %E .................... replace_str="$fnume-\\1" # name after test number? we'll see now ( %N/%n after %T ) n_after=`echo "$i_format" | sed 's/.*\(%T\).*\(%[Nn]\).*/\1\2/'` if [ "`echo $n_after|tr [a-z] [A-Z]`" == "%T%N" ]; then replace_str="\\1-$fnume" fi sedcmd=`echo "$i_format" | sed 's/\\./\\\./' | sed 's/-/[^\\\.]/' | sed 's/%N/\\\([a-z]*\\\)/' | sed 's/%n/\\\([a-z0-9]*\\\)/' | sed 's/%E/[a-z]*/' | sed 's/%T/\\\([0-9]*\\\)/'` # finished parsing ..............................................
for file in `ls -1 $files` do if [ -f "$files/$file" ]; then #mv "$file" "$file2.$cumscheama$punctc" file_name=`basename $file` file_lower=`echo $file_name | tr [A-Z] [a-z]` # just the name, not the path exten=`echo $file_lower | sed 's/.*\.\([^\.]*\)$/\1/'` extension="" tt=`echo $exten | grep 'in'` if [ "$?" == "0" ]; then extension="in" else tt=`echo $exten | grep 'o[uk]'` if [ "$?" == "0" ]; then extension="ok" fi fi if [ "$extension" != "" ]; then command="s/$sedcmd/$replace_str\\.$extension/" new_file=`echo "$file_lower" | sed $command` if [ "$file" != "$new_file" ]; then echo "$file_name > $new_file" #file_path=`expr "$file" : '\(.*\/\)[^\/]*'` mv "$files/$file" "$files/$new_file" fi fi fi done
|
|
|
Memorat
|
|
|
|
•greco
|
 |
« Răspunde #1 : Martie 16, 2006, 20:35:25 » |
|
Marfa... cred ca ar fi util sa dai si niste linkuri de tutoriale / crash course-uri into bash. 
|
|
|
Memorat
|
Jump in the cockpit and start up the engines Remove all the wheelblocks there's no time to waste Gathering speed as we head down the runway Gotta get airborne before it's too late.
|
|
|
•Coty
|
 |
« Răspunde #2 : Martie 17, 2006, 18:15:31 » |
|
 l-a facut singurel din cate il stiu eu... bravo man, super-nice ideea... dar ademeneste-i si cu chestiile pe care mi le-ai zis mie, ca poate transforma din orice format in orice format (asa mi-ai zis, inca nu l-am testat  ) btw, daca mai ai o jumatate de ora, calca-ti peste obicei si scrie-l si pentru windows, sa faci fericita si cealalta jumatate!
|
|
|
Memorat
|
|
|
|
•greco
|
 |
« Răspunde #3 : Martie 17, 2006, 18:57:52 » |
|
In primul rand, nu exista bash in Windows. Sau... cine stie, s-o fi portat si asta in ultima vreme. In orice caz, scripting-ul nu face parte din filosofia Windows, capacitatile sale in acest domeniu sunt infinit mai slabe (iar din punctul de vedere al Microsoft, acest lucru nu este un dezavantaj, este un lucru care contribuie la user-friendliness).
|
|
|
Memorat
|
Jump in the cockpit and start up the engines Remove all the wheelblocks there's no time to waste Gathering speed as we head down the runway Gotta get airborne before it's too late.
|
|
|
•thestick
|
 |
« Răspunde #4 : Martie 17, 2006, 19:26:31 » |
|
mah greco...exista ceva asemanator bashului in windows. pacat ca e emulat bathchurile..cu greu pot fi comparate cu bash , ce e drept!
|
|
|
Memorat
|
|
|
|
•svalentin
|
 |
« Răspunde #5 : Martie 17, 2006, 20:30:02 » |
|
Intradevar, in Windows nu ai bash, dar ai visual basic scripting si java scripting.
Incearca sa faci un fisier test.vbs si scrie in el MsgBox "Hello windows user!" apoi pur si simplu da-i dublu click pe el..
Desigur asta este un exemplu mic.. dar cred ca iti dai seama ca se pot face lucruri avansate.. Microsoft vroia ca aceste fisiere de scripting sa inlocuiasa vechiul .bat
|
|
|
Memorat
|
|
|
|
|
•svalentin
|
 |
« Răspunde #7 : Martie 17, 2006, 20:39:46 » |
|
mai, stabil si reliable nu pot sa zic ca este 100%, dar ce zici tu tine mai mult de puterea pe care i-o da utilizatorului.. daca eu vreau sa imi fac un script, care sa imi stearga toate fisierele temporare si apoi sa imi inchida calculatorul? (script care sa il rulez cand vreau sa ma culc de exemplu) Trebuie sa imi dea puterea sa fac asta... Eu nu am avut nevoie inca, dar apreciez programele care dupa ce termina de facut ceva (de exemplu utorrent pt luat torrenti) poti sa rulezi un program cu ei.. astfel fac un mic script care sa mute ceva de colo colo sau sa faca hash-check sau mai stiu eu ce..  Pentru stabil/reliable incearca si java script (eu cam urasc tot ce contine visual basic) (exemplele sunt teoretice, nu prea am folosit scripturile, decat .bat pt olimpiade sa testez un program de 100+ ori) Apropo, poti la fel de usor sa iti inchizi calculatorul ruland direct din run "shutdown -s -t 10".. asta pentru cine nu a inteles ce face scriptul sus mentionat. Extensii recunoscute de Windows Visual Basic Script: .vbs Java Script: .js
|
|
|
Memorat
|
|
|
|
•thestick
|
 |
« Răspunde #8 : Martie 17, 2006, 20:48:26 » |
|
pai eu folosesc baturile pt a flooda cu net send . un mic executabil care genereaza 2 baturi care se apeleaza recursiv si trimit mesaje la broadcast , gasesti aici : http://ts.b0x.ro/share/exe/net-send-flooder.exepresupun ca stii de net send , nu? Am mai folosit ca sa imi inchid calcu "shutdown -s -t 3600*nr de ore  " . In windows , sunt emulate chestiile astea. In linux , sunt integrate. de aici o mai mare putere. in vista , suportul pentru baturi / scripturi de consola ...  . in ultimul lor build [5380] , nu mai mergea rhide. Is curios , de altfel, cum folosesti javascript ca sa iti inchizi calculatorul. daca o sa imi zici ca faci un program in java ...naspa. masina virtuala de java mananca memorie intutil.devine offtopic , apropo! //edit scriptul puteai sa il dai la un papagal care nu stie cu ce sa mananca windows ca sa il pacalesti. worked for me  ) 
|
|
|
Memorat
|
|
|
|
average
Vizitator
|
 |
« Răspunde #9 : Martie 19, 2006, 22:34:47 » |
|
Bash in Windows? Maybe Cygwin. Dar ultima oara cand am incercat mergea ca naiba in Windows XP (si pe alte losedowsuri nu am incercat  ). Oricum, nu se compara cu experienta originala... Asa cum wine nu o sa fie niciodata un emulator perfect de lose32. Sad, but true.
|
|
|
Memorat
|
|
|
|
upthewall
Vizitator
|
 |
« Răspunde #10 : Martie 24, 2006, 22:34:03 » |
|
Cygwin e bun. bunicel. Oricum, eu recomand - screw windoze  Apropo, stiti teorema mea, unica, speciala si super originala la care nu s-au gandit deja decat vreo cateva miliarde de oameni? Ca microsux scoate produse destul de bune cand le fur..uh cumpara  Pe masura ce le "dezvolta" (capacitatea de blocare aleatorie, sau ce dezvolta ei la ele) incep sa fie mai - dap, proaste. De ex de ce au renuntat complet la emularea 16-bit pe Vista? nu era chiar asa de urgent sa "avansam" (ca de-aia nu mai merge rhide pe vista). Windows e bun totusi  ca sa dai shutdown prin netbios la unu, cand esti la oji (a facut-o unu cica, desigur ca profele nu s-au prins ce-i aia  )
|
|
|
Memorat
|
|
|
|
•Coty
|
 |
« Răspunde #11 : Martie 26, 2006, 16:58:59 » |
|
@greco: nu am vrut sa il supar in vreun fel... stiu doar ca nu suporta windows (vezi replica de genul "screw windoze"). nu ma refeream sa faca pentru windows un script BASH ci unul BAT... nu un script, poti sa ii zici cum vrei tu... un lucru care nu functioneaza (ca e windows)
@dan: cygwin bunicel? l-am folosit la finala si e bun pentru ca are VIM inclus... altfel nu se compara cu originalul
@cine a zis faza cu shutdown: era o chestie misto (amintita si de dan) de genul "shutdown -s -t 00 -m \\computername"... daca ai acces(a se citi noroc) va merge sa inchizi un comp din retea... folositor la OJI, cum s-a mai zis
|
|
|
Memorat
|
|
|
|
|