» »

Kopiranje vsake druge datoteke

Kopiranje vsake druge datoteke

Okapi ::

Sprašujem za kolega.
Ima tisoč (dobesedno:-) datotek, urejenih po abecedi. Recimo a b c d e f g ... Rad bi vsako drugo (a c e g...) spravil v neko drugo mapo. A je kakšen program ali orodje, s katerim bi to lahko naredil samodejno. Kakšna .bat datoteka mogoče? Če bi delo kaj olajšalo, lahko datoteke najprej po vrsti oštevilči 1a 2b 3c 4d 5e ...).

O.

WarpedGone ::

1. dir *.* /B > all_files.txt
2. all_files.txt odpreš v preglednici
3. dodaš stolpec s številkami
4. v sosednji stolpec naračunaš ostanek pri deljenu z 2
5. sortiraš po stolpcu z ostankom
5. pred ime fajla vfrineš stolpec v katerega nafilaš komando za premik enega filteta, neki v stilu "mv " ime fajla in kam
6. te komande in imena fajlov shraniš v bat filet
7. bat filet izvedeš v promptu
Zbogom in hvala za vse ribe

Enron x86 ::

Odpreš beležnico in napišeš:
REM Najprej se postaviš v mapo, kjer so datoeke
cd "C:/DatotekeVse"
REM Uporabiš program MOVE (isto kot "cut" v Windows GUI)
REM Spodnji ukaz bo prekopiral vse datoteke, ki se začnejo z B. Potem pač isto ponoviš še za druge (D*.*, F*.* ...)
MOVE b*.* "C:/IzbraneDatoteke"
REM Za konec še Pause, če želiš preverit postopek


Nato shraniš kot Nekaj.bat in poženeš.

Lp
Core i5-4690K@4.7| ASUS MAXIMUS VII HERO| 16 GB Corsair LP DDR3 1866 MHz|
ASUS 970 STRIX| SB Z OEM| Samsung 840 EVO 250 GB|
Seagate 2 TB| EVGA SuperNOVA G2 750 W| Fractal Define R4

Zgodovina sprememb…

fosil ::

Total commander ima zelo enostavno izbiranje datotek. Samo vpišeš recimo a* in ti izbere vse ki se začnejo z a in jih potem lahko premakneš kam drugam.
Tudi sicer je zelo praktično orodje za operacije z velikimi količinami datotek.
Tako je!

Okapi ::

Ja, samo tisto a b c je samo primer. Imena datotek se ne začenjajo zares na a b c, predvsem se pa ne začne vsaka z drugo črko.

recimo:
abeceda
adijo
afrika
akcija
alkimija
antimon
aritmetika

Prestavil bi rad abecedo, afriko, alkimijo, aritmetiko in še petsto naslednjih. Sistem od WarpedOne je OK, v Excelu sem posortiral posebej sode in lihe, samo še korak 5 in 6 moram pogruntati, kako se naredi:-)

O.

Duhec ::

@Okapi, kot je povedal WarpedOne...
Z ukazom dir *.* /B > all_files.txt si spravil vsa imena datotek v en fajl za lažjo obdelavo, uvozil v Excel in presortiral lihe in sode vrstice v svoje stolpce.

Zdaj imaš v Excelu sledeča dva stolpca:
z lihimi imeni:

abeceda.txt
afrika.txt
alkimija.rtf
aritmetika.doc
.....

in sodimi imeni:

adijo.doc
akcija.txt
antimon.rtf
.....

Raje kot MOVE uporabi ukaz COPY, da ohraniš originale, če se kaj zalomi !
Željeni dos ukaz/sintaksa za kopiranje posamezne datoteke je:
COPY ime_sode_datoteke.txt C:\SODE
COPY ime_lihe_datoteke.doc C:\LIHE

Zdaj pa PRED in ZA imenom datotek dodaj po en stolpec.
V stolpec pred imenom vstavi besedo COPY in ji dodaj na koncu obvezno še en presledek! Ta stolpec je enak tako za liho kot sodo grupo in za vsa imena seveda.
V stolec ZA imenom pa za sodo grupo napiši najprej en presledek in nato besedo C:\SODE, za liho grupo pa spet en presledek in nato besedo C:\LIHE.

Presledek je zato, da se kasneje v izvajanju bat skripte loči ukaz od imena in da je sintaksa ukaza pravilna. Brez presledka bi bil izgled sledeč: copyabeceda.txtc:\lihe

Zdaj je v Excelu izgled grup v lihi sledeč:

copy abeceda.txt c:\lihe
copy afrika.txt c:\lihe
copy alkimija.rtf c:\lihe
copy aritmetika.doc c:\lihe
.....

v sodi pa :

copy adijo.doc c:\sode
copy akcija.txt c:\sode
copy antimon.rtf c:\sode
.....

Zdaj z miško označi recimo liho grupo od začetka do konca tako, da zajameš vse tri stoplce (copy, ime_datoteke in lokacijo C:\lihe) in vse skupaj odloži (Paste) v Notepad (ne Wordpad ali Word!).
V Notepadu imaš zdaj v bistvu isto stanje kot v Excelu, samo brez odvečnega oblikovanja in praktično že napisane ukaze za vsako posamezno datoteko, torej zgolj ukaz z imeni. To je to kar rabiš za bat proceduro !

Zdaj samo še shraniš v npr. copylihe.bat
Isto ponoviš še za sodi stolpec.

Predno izvedeš .BAT proceduri obvezno skreiraj na disku mapi z imeni, ki si jih dal v Excelu v stolpec za imenom datoteke, v mojem primeru C:\LIHE in C:\SODE, ker če copy ukaz nima ciljne mape že skreirane, bo skopiral vse v en fajl.

Še izvedeš obe .BAT proceduri in preveriš, če se v posameznih mapah dejansko nahajajo imena kot si si želel.
Poročaj !

redo ::

Če ima cygwin ali če je na linuxih, potem v bashu lahko uporabi nekaj takega (presname vsako prvo datoteko od dveh navadnih datotek v tem in vseh gnezdenih mapah)
find . -type f -print0 | sort -z |\
awk -v RS='\0' -v ORS='\0' '!(a%2);{a++}' |\
while read -d $'\0' i; do mv -t "druga mapa" "$i"; done

Okapi ::

Operacija uspela, vsem najlepša hvala za pomoč.

Vmes smo odkrili še en program, Bulk Rename Utility
http://www.bulkrenameutility.co.uk/
Z njim se da datoteke preimenovati na najrazličnejše načine, med drugim tudi tako, da je potem mogoče ločiti sode od lihih.

O.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

program za pomoč pri tiskanju 200+pdf dokumentov

Oddelek: Pomoč in nasveti
252283 (1335) HotBurek
»

batch fajl iz txt (strani: 1 2 )

Oddelek: Programiranje
659682 (8343) b3D_950
»

DOS ukazi

Oddelek: Pomoč in nasveti
73310 (3139) ss1234
»

Ime Priimek v Ime_Priimek (strani: 1 2 )

Oddelek: Programska oprema
554977 (3937) Doman
»

Logika 1. letnik, danes

Oddelek: Loža
132477 (2230) Gemm

Več podobnih tem