Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem C# přejmenování souborů

Ahoj , mám takový problém.

Potřeboval bych aby se v určité složce (například C:\ProgramFiles)
Přejmenovali všechny soubory tímto způsobem: 1.txt na 2.txt , 2.txt na 3.txt,3.txt na 4.txt
a tak dále.

Nevíte jak to udělat ?

Díky,Superman

Předmět Autor Datum
Zacnes tym s najvyssim cislom a pokracujes po najnizsie. P.S. inac to co chces neni normalne.
MM.. 21.05.2013 16:35
MM..
Možná ti to nepřijde normální ,ale kdyby jsi znal důvod tak by jsi zjistil že v tom bude asi trocha…
AWSupermaN 21.05.2013 18:56
AWSupermaN
Vyřešeno: DirectoryInfo d = new DirectoryInfo(Server.MapPath("/news/news")); string d2 = Server.Map…
AWSupermaN 21.05.2013 19:32
AWSupermaN
normalne sa vytvaraju subory postupne od najnizsieho (t.j. 1 je najstarsi) a nemusis nic premenovava…
MM.. 21.05.2013 19:40
MM..
Staci :-). D2+(j+1).ToString() Pouziji tva slova, v C# existuje i toto zverstvo: 3.toString(); Konv…
Flash_Gordon 21.05.2013 21:00
Flash_Gordon
Tak to urcite :-D 400MB framework aby som si premenoval subor, to by som musel uplne osprostiet :) N…
MM.. 21.05.2013 21:13
MM..
inac trieda na dynamicke stringy samozrejme je dobra vec ja mam urobenu svoju uz davno v C++ s aloka…
MM.. 21.05.2013 21:21
MM..
:D mam 10mb hosting takze by se mi tam 42589955644746.txt nevesel ale jinak samozrejme vim co mas na… poslední
AWSupermaN 22.05.2013 00:02
AWSupermaN

Možná ti to nepřijde normální ,ale kdyby jsi znal důvod tak by jsi zjistil že v tom bude asi trocha logiky (jen trocha) :D

Btw. zkoušel jsem to udělat ,ale nevim jak to udělat aby to šlo od zhora.Napadlo mě jedině že j by mělo hodnotu f a šlo by jako j--; ale nwm

 DirectoryInfo d = new DirectoryInfo(Server.MapPath("/news/news"));
 string d2 = Server.MapPath("/news/news");
FileInfo[] f = d.GetFiles("*.txt");
                                         
for (int j = 1; j < f.Length; j++)
{
   File.Move(d2+j+".txt",d2+j+1+".txt");
}

Vyřešeno:

DirectoryInfo d = new DirectoryInfo(Server.MapPath("/news/news"));
                    string d2 = Server.MapPath("/news/news/");
                    FileInfo[] f = d.GetFiles("*.txt");
                                         
                    for (int j = f.Length; j > 0; j--)
                    {
                      File.Move(d2+j.ToString()+".txt",d2+(j+1).ToString()+".txt");
                    }
                    

normalne sa vytvaraju subory postupne od najnizsieho (t.j. 1 je najstarsi) a nemusis nic premenovavat. Ak chcem obmedzit pocet tak po MAX zacnem zas prepisovat ten prvy a neriesim cisla, subory maju aj datum poslednej zmeny a daju sa podla neho zoradit a nepotrebujem riesit nazvy. Alebo v nazve suboru dam datum a cas a stare len zmazem. Apod.

To co si napisal predpoklada ze v tej zlozke budu len tie txt subory a ziadne ine. Akonahle tam budu ine tak ti program bude robit blbosti. Ked ti to staci tak trebars

for (int j = f.Length; j >= 1; j--)
File.Move(d2+j+".txt",d2+j+1+".txt");

S tym d2+j+1+".txt" si nie som isty ci ti to skonvertuje tak jak chces, to v C# uz ludia vobec neuvazuju nad konverziami integer - string - concatenate atd a placa sa tam vsetko dokopy cez + jak koho zrovna napadne?

Tak to urcite :-D 400MB framework aby som si premenoval subor, to by som musel uplne osprostiet :) Nabuduce si kupim kamion aby som si doniesol z kuchyne sparatko.
Spravne to ma byt tak ze programator ma byt expert a ne lepic a ma presne vediet co sa jak konvertuje a hlavne jake su tam limitne situacie (co sa stane az budes mat subor 46384653923476936593.txt? Vies to? Nevies. Tak ja v svojom programe vzdy viem :)
P.S. samozrejme v tomto pripade blby priklad ale vies na co narazam :)

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