Přejmenování souboru s náhodným přidáním znaků

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
J X P
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 08. kvě 2004

Přejmenování souboru s náhodným přidáním znaků

Příspěvek od J X P »

Zdar lidi, o5 jsem si pro vás přiipravil takovou lahůdku. Potřebovat bych v adresáři přejmenovat všechny soubory, ale zároveň bych kvůli řazení potřeboval přidat na začátek náhodné číslo, mělo by to vypadat asi takhle

original name.txt ----> 001 original name.txt

to číslo by se mělo generovat náhodně a při každém startu programu by mělo to číslo program nejdřív odstranit a pak znovu náhodně přidat. Jde o to, že těch souborů mám v adresáři hodně a ělat to ručně je pakárna.

Poradíte něco ?

Díky
---
pavel.minarik
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 03. čer 2003
Bydliště: Brno
Kontaktovat uživatele:

Příspěvek od pavel.minarik »

no a v jakém jazyku? proč náhodně, proč ne inkrementálně :?
Pavel Minarik @ Dell Latitude 7300 (bohužel moc topí, nedoporučuju)
J X P
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 08. kvě 2004

Příspěvek od J X P »

to je kvůli následnému náhodnému řazení. bohužel ten program pro který to je neumí řadit jinak než podle názvu a to se dá obejít jedině přidání toho řetězce na začátku souboru.

Našel jsem jeden nástroj, který umí toto přidat, ale nakonec souboru, což je mi na nic. A když rovnou automaticky přejmenuju i originální soubor tak pak zase nevím co v něm původně je.

funguje to takto

original name.txt -----> list_001.txt

kdyby to umělo dát dopředu .... :-(
---
Jiri Drak
Středně pokročilý
Středně pokročilý
Registrován: 04. čer 2003
Bydliště: Č.K.

Příspěvek od Jiri Drak »

Takovyhle vymozenosti si nejspis budes muset naprogramovat sam.
MB Asus P7P55D-E, CPU Core i5-750@3700MHz, RAM 16GB, VGA Radeon RX Vega 56
J X P
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 08. kvě 2004

Příspěvek od J X P »

Dobra tedy ..... z jednoduche otazky prejdeme na ....

a jak se programuje ? :-)

Vazne, bohuzel programovani neni moje silna stranka, ne ze bych nechtel, ale proste nevim jak na to, takze tudy cesta nevede. Spoleham na to, ze je na svete dost programatoru, kteri treba jiz neco podobneho delali, jen jde o to je najit ;-)
---
pavel.minarik
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 03. čer 2003
Bydliště: Brno
Kontaktovat uživatele:

Příspěvek od pavel.minarik »

no, kdysi jsem si naprogramoval něco na obrázky, přejmenovává inkrementálně a čísla doplňuje tuším zezadu, můžu dát zdrojáky, je to v Delphi
Pavel Minarik @ Dell Latitude 7300 (bohužel moc topí, nedoporučuju)
Dony
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 29. říj 2003
Bydliště: okr. Mělník

Příspěvek od Dony »

tohle by šlo celkem jednoduše udělat ve VBScriptu, bylo by to na pár řádků
Obrázek Avatar tancuje, nechce se mu na záchod... :) Windows Vista je tady, řekněte "WTF" :D
J X P
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 08. kvě 2004

Příspěvek od J X P »

To je super, jenže když to já neumím :-(

Nějaký návod by nebyl ?
---
Dony
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 29. říj 2003
Bydliště: okr. Mělník

Příspěvek od Dony »

zejtra ti sem něco hodím
Obrázek Avatar tancuje, nechce se mu na záchod... :) Windows Vista je tady, řekněte "WTF" :D
Dony
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 29. říj 2003
Bydliště: okr. Mělník

Příspěvek od Dony »

Tady máš ten skript, stačí ho dát do souboru s příponou vbs, hoď ho do nadřazenýho adresáře k adresáři, kde chceš přejmenovávat, přepiš konstantu FilesSubdir (do uvozovek, kde je "dir" název toho adresáře, kde chceš přejmenovávát). Pak jsou tam uprostřed dva řádky (začínaj ' ffilact... ), nad nima je popis jejich funkce, podle toho, u kterého odstraníš znak ' to bude přejmenovávat. Můžeš si z toho udělat dva skripty, jeden na první "pojmenování" a druhej na přejmenování (podle toho kterej z řádků tam necháš)
Neni tam kontrola, kdyby se při přejmenování vyskytly dva soubory stejného názvu, ale to by se stát nemělo.

Kód: Vybrat vše

const FilesSubdir="dir" 'nazev podadresare, ve kterem se bude prejmenovavat
      Napis   = "Prejmenovat soubory v adresari "& dirtobecleaned &"?"
      Titulek     = "Windows Scripting Host"
Dim intDoIt
Dim fso, fold, ffil, ffilact, num

Randomize
Call Welcome()

  Set fso = CreateObject("Scripting.FileSystemObject")
   Set fold = fso.GetFolder(Fso.getAbsolutePathName("")& "\" & Filessubdir)
     Set ffil = fold.Files
  For Each ffilact in ffil
    num=int(rnd*999)
 ' tenhle radek zajisti ocislovani pri prvnim spusteni (prida cisla pred nazev)
'    ffilact.move(fold.path & "\" & string(3-len(cstr(num)),"0") & cstr(num) & ffilact.name)
 ' tenhle radek zajisti ocislovani pri dalsich spustenich (odebere prida cisla a prida jina)
'    ffilact.move(fold.path & "\" & string(3-len(cstr(num)),"0") & cstr(num) & right(ffilact.name,len(ffilact.name)-3))
Next

msgbox "Hotovo"

Sub Welcome()
    intDoIt =  MsgBox(Napis, vbOKCancel + vbinformation, Titulek )
    If intDoIt = vbCancel Then WScript.Quit
End Sub 
btw važ si toho, je to skoro půl hodiny práce...
Obrázek Avatar tancuje, nechce se mu na záchod... :) Windows Vista je tady, řekněte "WTF" :D
J X P
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 08. kvě 2004

Příspěvek od J X P »

No to nemá chybu, super, moc děkuju.

Kdybych tam chtěl ještě přidat za číslo nějaký znak např aby to vypadalo 005_original text.txt a po dokončení aby spustil jiný program, je to složité ?

Jsem tobě i tvému přešlapujícímu avataru zavázán :-)

Pokud by to přidávání znaků bylo moc složité tak to udělám jinak, ale to spuštění programu po dokončení by se šiklo.
---
Dony
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 29. říj 2003
Bydliště: okr. Mělník

Příspěvek od Dony »

přidat znak je to nejmenší, stačí to připsat do řádků, který přejmenovávaj...
např:

Kód: Vybrat vše

.....)),"0") & cstr(num) & ffilact.name....
.....)),"0") & cstr(num) & "tohlebudenavic" & ffilact.name....
stačí to do toho řádku pro první přejmenování

na spuštění programu přidej třeba za ten msgbox...

Kód: Vybrat vše

Set WshShell = WScript.CreateObject("WScript.Shell")     
  WshShell.Run("cestaanazevprogramu")
Obrázek Avatar tancuje, nechce se mu na záchod... :) Windows Vista je tady, řekněte "WTF" :D
J X P
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 08. kvě 2004

Příspěvek od J X P »

Tak jsem to tam takto vložil

Kód: Vybrat vše

......
msgbox "Prijemnou jizdu" 

Set WshShell = WScript.CreateObject("WScript.Shell")      
  WshShell.Run("D:\Program Files\18 WoS Across America\aa.exe")

Sub Welcome() 
    intDoIt =  MsgBox(Napis, vbOKCancel + vbinformation, Titulek ) 
    If intDoIt = vbCancel Then WScript.Quit 
End Sub
přejmenování proběhne v pořádku, ale program se nespustí, hodí to tuhle hlášku

Skript: C:\.........\radio.vbs
Řádek: 21
Znak: 3
Chyba: Systém nemůže nalézt uvedený soubor

Kód: 80070002
Zdroj: (null)

Cestu jsem zadal správně a odkazovaný exe soubor v tom adresáři existuje, co je špatně ?

P.S. Vím že jde ve Win XP zkopírovat chybovou hlášku přímo do clipboardu, jen si nemůžu vzpomenout jakou kombinací kláves .... ufff, nevíš ?
---
pavel.minarik
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 03. čer 2003
Bydliště: Brno
Kontaktovat uživatele:

Příspěvek od pavel.minarik »

alt+print_screen
Pavel Minarik @ Dell Latitude 7300 (bohužel moc topí, nedoporučuju)
Dony
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 29. říj 2003
Bydliště: okr. Mělník

Příspěvek od Dony »

zkus si tu cestu zkopírovat ze zástupce k tomu souboru, určitě tam, máš překlep...
Obrázek Avatar tancuje, nechce se mu na záchod... :) Windows Vista je tady, řekněte "WTF" :D
J X P
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 08. kvě 2004

Příspěvek od J X P »

Tak už jsem na to přišel. Musí tam být zadaná cesta bez závorky a ve 3 úvozovkách, uff

vypadá to takhle:

Kód: Vybrat vše

...... 
msgbox "Prijemnou jizdu" 

Set WshShell = WScript.CreateObject("WScript.Shell")      
  WshShell.Run """D:\Program Files\18 WoS Across America\aa.exe"""

Sub Welcome() 
    intDoIt =  MsgBox(Napis, vbOKCancel + vbinformation, Titulek ) 
    If intDoIt = vbCancel Then WScript.Quit 
End Sub
To jsou věci mezi nebem a zemí :-)
---
Dony
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 29. říj 2003
Bydliště: okr. Mělník

Příspěvek od Dony »

mě to taky došlo, je to jako kdybys to napsal do příkazovýho řádku bez úvozovek, to za první mezerou by interpretovalo jako argument programu -> chyba, takže se to musí uzavřít úvozovkama navíc, aby výslednej řetězec měl úvozovky (že jsou tři je daný syntaxí basicu)
Obrázek Avatar tancuje, nechce se mu na záchod... :) Windows Vista je tady, řekněte "WTF" :D
J X P
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 08. kvě 2004

Příspěvek od J X P »

přesto ti velice děkuju, je vidět, že jako nový mod tafy budeš velice prospěšný :-).
---
Odpovědět

Zpět na „Programování a web“