Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Soft na hromadné přejmenování souborů v adresáři podle názvu adresáře?

Neznáte někdo soft na hromadné přejmenování souborů v adresáři podle názvu adresáře?

Příklad:
Mám adresáře Jaro, Leto, Podzim, Zima. V každém z adresářů je zhruba 50 souborů. Chtěl bych je přejmenovat tak, aby v adresáři Jaro byly soubory jaro01.jpg až jaro50.jpg, v adresáři Leto by byly soubory leto01.jpg až leto50.jpg atd.

Problém je v tom, že těchto adresářů je asi 200, takže přejmenovávat to nějakým softem po jednom je na dlouho. A vypadá to, že to není jednorázová záležitost, budu to zřejmě využívat častěji.

Díky za tip

Předmět Autor Datum
Buď si na to napiš VBS skriptík (IMHO to je tak na 10 řádek), nebo to můžeš dělat v TC - ctrl+M, nad…
touchwood 24.06.2006 11:25
touchwood
no, to není úplně ono... :-( v podstatě je to stejný postup, který dosud používám (Name It), jenže…
rokator 24.06.2006 11:52
rokator
jestli to máš v jednom hlavním adresáři, tak ti na to odpoledne napíšu to vbs-ko :-)
touchwood 24.06.2006 12:11
touchwood
no, to mám, to bych ti byl vděčnej :-) mimochodem, VBS mi nic neříká, teda vím, co to je, ale tím t…
rokator 24.06.2006 12:13
rokator
Tak tady to je: Dim fso, f, sf, sfl, folder, file, filelist, counter, warning, stary, novy path =…
touchwood 24.06.2006 15:15
touchwood
Koukám, že tady roste konkurence JaFimu, který má patent na psaní utilit na požádání... ;-):-D
host 24.06.2006 15:17
host
:-D
touchwood 24.06.2006 15:22
touchwood
JaFi musí opravovať chyby v PSPade a teraz na to nemá čas.:)) Však Intex?;-) Ozaj a čo je s JaFim?:-…
msx. 26.06.2006 06:32
msx.
Chyba byla odhalena :-D Nechtěně jsem nedodal v jedné části odpovídající property, teď už by to mělo…
touchwood 24.06.2006 17:45
touchwood
super, dostal jsem se k tomu až teď, ale funguje to krásně, díky moc :))
rokator 25.06.2006 19:05
rokator
Taky děkuju, ten script jsem rovněž využil. Jen, možná kvůli většímu počtu přejmenovaných .jpg, se p…
orang-utang 26.06.2006 05:11
orang-utang
Ten skript rozhodně nemá vliv na pojmenování přípony. Já jsem zatím zkusil přejmenovat adresář jen s…
rokator 26.06.2006 05:28
rokator
ano, skript počítá jen s třípísmennými koncovkami (a bere za novou koncovku souborů poslední 3 písme…
touchwood 26.06.2006 07:20
touchwood
nedalo mi to a upravil/opravil jsem to :-D Dim fso, f, sf, sfl, folder, file, filelist, counter, wa…
touchwood 26.06.2006 08:58
touchwood
Díky, hluboká poklona tvým znalostem a ochotě.
orang-utang 26.06.2006 16:36
orang-utang
ook-eek! :-D
touchwood 26.06.2006 19:51
touchwood
:i:Ha!To delal Polda ze Ctyrlistku!
Mrakokopulos 26.06.2006 20:09
Mrakokopulos
[StyleSheetMrOokMrEek.gif]
host 26.06.2006 21:35
host
umi to i acdsee
ja 26.06.2006 02:56
ja
hmm, a která verze? a můžeš to trochu upřesnit? myslím, že se pleteš...
rokator 26.06.2006 04:53
rokator
Ale nie každý bude ACDSee kvôli tomu inštalovať.;-)
msx. 26.06.2006 06:33
msx.
jednak instalovat a jednak kupovat :!: každopádně jsem tuhle funkci v ACDSee nenašel...
rokator 26.06.2006 06:41
rokator
Ja síce ACDSee používam, ale žiaľ, je to síce platený program, ale banálnu vec ako prevod obrázku na…
msx. 26.06.2006 07:06
msx.
super diky, i po nekolika letech byl pro me problem sehnat neco co zvladne takovouhle primitivni ulo…
renameME 06.12.2011 11:16
renameME
Do TC stačí doinstaloval FileX a v hromadném přejmenování je to potom pod tlačítkem [=?] filex - Par… poslední
Wikan 06.12.2011 11:32
Wikan

Buď si na to napiš VBS skriptík (IMHO to je tak na 10 řádek), nebo to můžeš dělat v TC - ctrl+M, nadefinuješ si nové jméno (něco jako [P][C] a počet číslic nastavíš např. na 4, v zápise např. takto: [P][C1+1:4]) a celé si to pojmenuješ a uložíš, abys to nemusel nastavovat pokaždé.

Tak tady to je:

 Dim fso, f, sf, sfl, folder, file, filelist, counter, warning, stary, novy
  path = InputBox("Zadejte cestu k nadřazenému adresáři ve kterém se nachází adresáøe s obrázky")
  warning = MsgBox("Budou přejmenovány soubory v podadresářích tohoto adresáře: " & path & ". Je to správně?", 276, "Poslední záchrana") 
  if warning = 6 then
  	Set fso = CreateObject("Scripting.FileSystemObject")
  	Set f = fso.GetFolder(path)
  	Set sf = f.SubFolders
  	For Each folder in sf
		counter = 1
		Set sfl = fso.GetFolder(folder)
		set filelist = sfl.Files
		Wscript.echo " "
		Wscript.echo "Adresář " & folder
		Wscript.echo "číslo - starý název - nový název"
		Wscript.echo "==============================================================================="
		For Each file in filelist
			stary = file
			novy = folder & "\" & folder.Name & Right("0000" & CStr(counter),4) & "." & Right(stary,3)
			fso.MoveFile stary, novy
			wscript.echo counter & " - " & stary & " - " & novy
			counter = counter + 1
		next

	  next
 	Wscript.echo "Akce provedena!"
  Else
  	Wscript.echo "Akce byla zrušena!"
 	
  end if

ulož si to jako "něco.vbs" a doporučuju spouštět pomocí příkazu cscript něco.vbs v konzoli CMD.

Chyby které jsem neodladil: Čas od času se mi stane, že první přejmenování (pro mě nepochopitelně) vezme při volání metody sfl.Files (tj. při načítání jmen souborů) i sobory, které "teprve budou" ::) - jak kdyby během vnitřní smyčkou ještě jednou aktualizoval -> z toho plyne, že se může stát, že číslování nepůjde od 0001, ale od vyššího čísla. Nicméně druhé spuštění skriptu proběhne už ok. Jsem zmaten, vysvětlí mi to někdo? (Přece jen nejsem VBS guru :-) ) Ještě mě napadá přepsat to pomocí WMI, ale to se mi už nechce :-D

Možné úpravy: Pokud se z obou cyklů vyhážou všechny Wscript.echo výpisy do konzoly, je možné pohodlně spouštět skript pomocí wscript (tj. poklikáním na ikonku), ale pak není žádný záznam o činnosti skriptu. Dále je možno změnit počet nul v číslování - postačí změnit poslední číslovku ve funci Right("0000" & CStr(counter),4) na požadovanou hodnotu (nyní jsou 4)

Chyba byla odhalena :-D Nechtěně jsem nedodal v jedné části odpovídající property, teď už by to mělo být ok.

 Dim fso, f, sf, sfl, folder, file, filelist, counter, warning, stary, novy
  path = InputBox("Zadejte cestu k nadřazenému adresáři ve kterém se nachází adresáře s obrázky")
  warning = MsgBox("Budou přejmenovány soubory v podadresářích tohoto adresáře: " & path & ". Je to správně?", 276, "Poslední záchrana") 
  if warning = 6 then
  	Set fso = CreateObject("Scripting.FileSystemObject")
  	Set f = fso.GetFolder(path)
  	Set sf = f.SubFolders
  	For Each folder in sf
		counter = 1
		Set sfl = fso.GetFolder(folder)
		set filelist = sfl.Files
		Wscript.echo " "
		Wscript.echo "Adresář " & folder
		Wscript.echo "číslo - starý název - nový název"
		Wscript.echo "==============================================================================="
		For Each file in filelist
			stary = file
			novy = folder.path & "\" & folder.Name & Right("0000" & CStr(counter),4) & "." & Right(stary,3)
			fso.MoveFile stary, novy
			wscript.echo counter & " - " & stary & " - " & novy
			counter = counter + 1
		next

	  next
 	Wscript.echo "Akce provedena!"
  Else
  	Wscript.echo "Akce byla zrušena!"
 	
  end if

Taky děkuju, ten script jsem rovněž využil. Jen, možná kvůli většímu počtu přejmenovaných .jpg, se přípona asi u 200 z 1100 .jpg změnila v .peg. Při dalším pokusu o přejmenování stejné sady fotek se počet chybných snížil asi na 50. Taky .peg. Je to zvláštní a mám hledat chybu v hardware, že tu operaci nestíhal, nebo je to normální a je to tím velkým množstvím?
CPU 2.26 GHz, RAM 512 MB. Docela mě to zajímá, ale k netu se dostanu až odpoledne, tak sorry, že třeba hned nebudu reagovat.

Ten skript rozhodně nemá vliv na pojmenování přípony. Já jsem zatím zkusil přejmenovat adresář jen s 250 soubory, různé přípony, a vše proběhlo OK.

edit: tak jo, má to vliv i na ty přípony - např. soubor image.js to přejmenovalo na image..js
každopádně, tak jak to je mi to vyhovuje :-) ještě jednou díky

ano, skript počítá jen s třípísmennými koncovkami (a bere za novou koncovku souborů poslední 3 písmenka z původního souboru; tj. např. z obrázek.jpeg bude právě ten image0001.peg). Bohužel VBS bere filename jako kompletní, nerozlišuje koncovku a bylo by nutné dopsat další kód, který by to ošetřoval, což mi připadlo jako zbytečné..

Kdybyste to chtěli dodělat, tak bych o tom uvažoval :-)

nedalo mi to a upravil/opravil jsem to :-D

Dim fso, f, sf, sfl, folder, file, filelist, counter, warning, stary, novy, koncovka
  path = InputBox("Zadejte cestu k nadřazenému adresáři ve kterém se nachází adresáře s obrázky")
  warning = MsgBox("Budou přejmenovány soubory v podadresářích tohoto adresáře: " & path & ". Je to správně?", 276, "Poslední záchrana") 
  if warning = 6 then
  	Set fso = CreateObject("Scripting.FileSystemObject")
  	Set f = fso.GetFolder(path)
  	Set sf = f.SubFolders
  	For Each folder in sf
		counter = 1
		Set sfl = fso.GetFolder(folder)
		set filelist = sfl.Files
		Wscript.echo " "
		Wscript.echo "Adresář " & folder
		Wscript.echo "číslo - starý název - nový název"
		Wscript.echo "==============================================================================="
		For Each file in filelist
			stary = file
			koncovka = Split(file.name, ".", -1, 1)
			novy = folder.path & "\" & folder.Name & Right("0000" & CStr(counter),4) & "." & koncovka(UBound(koncovka))
			fso.MoveFile stary, novy
			wscript.echo counter & " - " & stary & " - " & novy
			counter = counter + 1
		next

	  next
 	Wscript.echo "Akce provedena!"
  Else
  	Wscript.echo "Akce byla zrušena!"
 	
  end if

Ja síce ACDSee používam, ale žiaľ, je to síce platený program, ale banálnu vec ako prevod obrázku na ikonu mi musí robiť IrfanView.:-/ No a čo sa týka kupovania, keby o to išlo, tak by sa dalo nainštalovať a premenovať (ak to naozaj dokáže) a prestať používať, je to totiž trial. Lenže ja som chcel skôr naznačiť to, že načo používať kamión na prevoz stoličky o 200 m.:-)

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