Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno presun súboru do adresárovej štruktúry odvodenej z jeho názvu - skript

Zdravím všetky ochotné duše.
Hľadal som, možno aj našiel, ale nepochopil :-(

Potreboval by som na stroji s Win XP vyriešiť takúto vec:

Mám folder, kde je hafo súborov s názvom v tvare:
UU-STRINGA-00-ROK-STRINGB-STRINGC-STRINGD.txt

potreboval by som nejaký skript, programček, čokoľvek, čo by dokázalo jednotlivé súbory presunúť do adresárovej štruktúry v tvare UU\ROK\STRINGA

Príklad: súbor C:\input\UU-1234-00-2005-98765-AA-BBB.txt presunúť do foldra C:\output\UU\2005\1234

doplňujúce info:
- STRINGA,STRINGB,STRINGC,STRINGD majú rôzny počet znakov
- jednotlivé časti názvu sú vždy oddelené pomlčkami
- predpokladáme, že folder do ktorého sa má súbor presunúť existuje. Pokiaľ neexistuje, súbor sa nepresúva a zostáva na pôvodnom mieste
- UU, -00-, sú reťazce ktoré sa nemenia
- ROK je štvorčíslie, 2001, 2002 a pod.

Vyzerá ako blbosť, ale tých súborov je celkom dosť a potrebujem to riešiť denne, takže by mi to ušetrilo spústu času ktorý by som mohol venovať kolegyniam :)

Vopred vďaka za pomoc či radu.

Předmět Autor Datum
Toto by snáď mohlo stačiť: @echo off for /f "tokens=1,2,3,4,5,6,7 delims=-" %%A in ('dir /b input\*…
los 10.06.2009 19:40
los
Uf. ::) Dobrá práce!
host 10.06.2009 19:43
host
Neskutočné, klobúk dolu. :-) V živote by som nepovedal že sa to dá vyriešiť jedným riadkom. Vyzerá ž…
deadhead 10.06.2009 20:10
deadhead
Místo :beer: by ses měl spíš rozdělit o ty kolegyně (ale je nutné, aby jich byl sudý počet ]:))
host 10.06.2009 21:24
host
Milerád, bohužiaľ až na pár výnimiek je to materiál len pre silné povahy :) Každopádne skriptík fun… poslední
deadhead 11.06.2009 09:00
deadhead

Toto by snáď mohlo stačiť:

@echo off
for /f "tokens=1,2,3,4,5,6,7 delims=-" %%A in ('dir /b input\*.txt') do move /Y input\%%A-%%B-%%C-%%D-%%E-%%F-%%G output\%%A\%%D\%%B

Stačí z toho spraviť bat súbor a potom len spustiť z adresára, ktorý je rodičom adresárov input a output (pre tvoj príklad by mal byť tento baťák v adresári C:\). Cesty sa dajú zmeniť buď priamo v baťáku alebo by sa to dalo ešte upraviť, aby to bralo cesty k input a output adresárom z argumentov. Pri presúvaní to prepisuje prípadné existujúce súbory (argument /Y v príkaze move).

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