Tällä skriptillä voit nopeasti ja vaivattomasti uudelleennimetä useita tiedostoja. Suunniteltu digikuvien uudelleennimeämiseen, mutta toimii kaikkiin tiedostoihin.
Nimeää tiedostot "jotain.1.jpeg,jotain.2.jpeg,...jotain.n.jpeg"
Tämä säilyttää alkuperäisen tarkentimen.
Tuli vähän HTML:ää ja CSS:ää ulkoasun parantamiseksi mukaan...
Toimii ainakin Windows XP + IE.
Omalla koneella tiedostot pystyi ainakin nimeämään suoraan niiden kansiosta, vaikka se olisikin juurihakemiston ulkopuolella.
kuvannimeäjä.php
<?php #Itse PHP-koodi: ##################### # PALAUTTEEN ANTAJA # ##################### function anna_kayttajapalaute($palauteString) { #Hajoita $palauteString taulukkoon käyttämällä explodea.# $palauteTaulukko = explode("|", $palauteString); #Liitä taulukko jälleen merkkijonoksi, ja lisää <br /> jokaisen alkion loppuun.# $palaute = implode("<br />", $palauteTaulukko); return $palaute; } ############################ # KANSION NIMEN PALAUTTAJA # ############################ function kerro_kansio($kansio) { if($kansio != "") { #Lue kansio taulukkoon.# $taulukko=str_split($kansio); #Jos taulukon pituus on yli 33-merkkiä, lisää ... perään.# if(count($taulukko) > 33) { for($n=0; $n <= 33; $n++) { $palauteKansio .= $taulukko[$n]; } $palauteKansio .= "..."; } else { $palauteKansio=$kansio; } #Laita kansiolle akronyymi, jossa näkyy kansion koko nimi.# return "<span class=\"kansio\"><acronym title=\"$kansio\">$palauteKansio</acronym></span>"; } else { return "<span class=\"kansio\">Et ole kirjoittanut yhtään kansionnimeä</span>"; } } ################################ # TIEDOSTOJEN UUDELLEENNIMEÄJÄ # ################################ function uudelleennimea_tiedostot($kansio, $nimi, &$palauteString) { #Lue hakemisto taulukkoon, jos submit-nappia on painettu.# if(isset($_POST['submit'])) { $taulukko=scandir($kansio) or die('<p class="virhe"><span class="huutomerkki">!</span> Hakemistoa ei pystytty lukemaan taulukkoon. Tarkista, että kirjoitit kansion nimen oikein!</p></body></html>'); usort($taulukko,"strnatcmp"); } $palauteString .= '<center><div class="overflow">'; #Silmukoi jokaisen alkion läpi.# foreach($taulukko as $numero => $filu) { #Tiedoston vanha nimi täydellisellä hakemistopolulla.# $vanhaNimi=$kansio."\\".$filu; #Poistetaan $numero-muuttujasta 1, jotta nimien numerointi alkaisi yhdestä (Listaus: [0] => . [1] => ..).# $numero = $numero - 1; #Määritä tiedoston tarkennin.# $tarkenninFilu=explode(".",$filu); $i=count($tarkenninFilu)-1; $tarkennin=$tarkenninFilu[$i]; #Määritellään uusi nimi täydellisellä hakemistopolulla.# $uusiNimi=$kansio."\\".$nimi.".".$numero.".".$tarkennin; #Nimetään tiedostot uudestaan. HUOM! Tähän kohtaan EI VOI LAITTAA "or die()", sillä silloin tulee Permission Denied-virhe.# #Koodi on valitettavasti vain niin itsepäinen, ettei edes if-lauseella toteutettu virhesanoma toimi. Tässä siis täytyy luottaa# #siihen, että ilman viestejä pärjätään.# $uudelleennimeaminen=rename($vanhaNimi, $uusiNimi); #Käyttäjälle menevä viestitys...# if($uudelleennimeaminen !=false) $palauteString .= basename($vanhaNimi)." => ".basename($uusiNimi)."|"; else { if(basename($vanhaNimi)=="." or basename($vanhaNimi)=="..") continue; else { $palauteString .= "<p class='virhe'><span class='huutomerkki'>!</span>".basename($vanhaNimi)." => ".basename($uusiNimi). "<font color='black'>***</font>Uudelleennimeäminen epäonnistui</p>|"; break; } } } $palauteString .= "</div></center>"; if(isset($_POST['submit'])) { if($uudelleennimeaminen !=false) echo "<script language='javascript' type='text/javascript'> alert('Onnistui!') </script>"; else echo "<script language='javascript' type='text/javascript'> alert('Virhe tapahtui!') </script>"; } } ?>
tiedostonnimeäjä.php
<?php #HTML-pohja: require("kuvannimeaja.php"); $kansio=strip_tags($_POST['kansio']); $nimi=strip_tags($_POST['nimi']); $palaute=""; ?> <html> <head> <title>Tiedostonnimeäjä 2.0</title> <link rel="stylesheet" type="text/css" language="css" href="tyyli.css"> </head> <body> <table class="taulu"> <caption onMouseOver='this.className="otsikkoPaalla"' onMouseOut='this.className="otsikko"' class="otsikko"> Tiedostonnimeäjä 2.0 </caption> <tr class="paarivi"> <td class="tiedot"> <p class="tiedot">Uudelleenimeämisen tiedot:</p> <p class="alatiedot">Kansio, jonka tiedostot uudelleennimettiin: <br /> <?php echo kerro_kansio($kansio);?> </p> <p class="alatiedot">Uusi nimi: <br /> <?php if ($_POST['nimi'] != "") echo "<span class=\"kansio\">".$nimi."</span>"; else echo "<span class=\"kansio\">Et ole kirjoittanut yhtään kansionnimeä</span>";?> </p> </td> <td class="vali"> </td> <td class="paaosa"> <form method="post" action="http://localhost/Uudelleennimeaja/tiedostonnimeaja.php"> <p class="perusteksti"> Kansio, jossa tiedostot ovat. Huomaa, että jos kansiossa on muita kansioita, <br /> niiden sisältöä ei uudelleennimetä mitenkään, mutta kansiot <br /> nimetään vastaavasti kuin muutkin tiedostot. </p> <input type="text" name="kansio"> <br /> <p class="perusteksti"> Tiedoston nimi. Tiedostot nimetään tähän tyyliin: jotain.1 , jotain.1 , jotain.2 jne.<br /> Tämä nimi tekee jokaisen tiedoston nimestä yksilöllisen, mikäli uudelleennimeät useita<br /> eri kansioita ja laitat jokaisen kansion kohdalla tähän eri nimen.<br /> Huom! Nimessä <strong>EI SAA OLLA</strong> muita merkkejä kuin A-Ö, a-ö, 0-9 ja . </p> <input type="text" name="nimi"> <br /> <br /> <input type="submit" value="Nimeä uudelleen" name="submit" class="submit"> </form> </td> </tr> </table> <?php uudelleennimea_tiedostot($kansio, $nimi, $palaute); echo anna_kayttajapalaute($palaute); ?> </body> </html>
tyyli.css
/*BODY*/ body{background:#faeac5; padding:1cm 1cm 1cm 0cm;} /*TAULU*/ table.taulu{background:#faeac5;} caption.otsikkoPaalla{color:#FFC125; font-family:Comic Sans MS; font-size:0.8cm; font-weight:bold;} caption.otsikko{color:#CD9B1D; font-family:Comic Sans MS; font-size:0.8cm; font-weight:bold;} p.perusteksti{color:#CD950C; font-family:Comic Sans MS; font-size:0.5cm;} input.submit{color:#CDAD00; font-family:Comic Sans MS; font-size:0.6cm; background:#fadac5; border-style:outset; border-width:1px 2px 2px 1px;} td.tiedot{height:100%; width:10cm; border-style:ridge; border-width:3px 6px 0px 0px; border-color:#FFDAB9; padding:0.3cm 0.3cm 1cm 0.5cm;} td.vali{width:0.5cm;} /*PALAUTETIEDOT*/ p.virhe{color:red; font-family: Comic Sans MS; font-size:0.5cm;} span.huutomerkki{font-family:Dutch801 XBd BT; color:#fe0000; font-size:1cm; font-weight:bold;} p.onnistui{font-family:Comic Sans MS; color:#05ff00; font-size:0.5cm;} /*UUDELLEENNIMEÄMISEN TIEDOT*/ p.tiedot{color:#4169E1; font-family:Comic Sans MS; font-weight:bold; text-decoration:underline; font-size:0.6cm; position:relative; top:-20%;} div.overflow{background:#F5DEB3; width:13cm; height:5cm; font-family:Comic Sans MS; color:#05ff00; font-size:0.5cm; overflow:auto; padding:0.1cm 0.1cm 0.1cm 0.5cm; border-style:ridge; border-width:7px 3px 7px 7px; border-color:#FFDAB9; position:relative; left:55px; top:-0.1cm;} span.kansio{color:#00CED1; font-family:Comic Sans MS; font-size:0.4cm;} p.alatiedot{color:#00AED1; position:relative; top:-23%; font-family:Comic Sans MS; font-size:0.5cm;}
Voi niitä edellisiä submittauksiakin muokkailla. Paljon on tavaraa näin pienen asian ympärille saatu. Kommentoinnin sisällytyksestä plussaa. CSS näyttää kauhialta hötöltä, voisi vähän siistiä. Ei ne rivinvaihdot kaistaa niin kummoisesti syö ja et kuitenkaan tiivistä sivun kuvausta samoin.
Tuo CSS on nyt mitä on, vanha tapa laittaa tuolleen☺
Aumlitkin voi vaihtaa ääkkösiksi, tablet diveiksi ja mainita, notta toimii PHP:n versiosta 5 ylöspäin. rename palauttaa falsen mikäli uudelleennimeäminen epäonnistuu, joten siihen kyllä saa virheviestin ympättyä sillä if-lauseella, mikäli niin tahtoo.
EDIT: Strip_tags on ihan varteenotettava vaihtoehto käyttäjän syötteen parsimiseksi tosiaan, vaikka sitä ennen ihmettelinkin. Toinen vaihtoehto on ajaa syötteet htmlentities-funktion läpi.
Laitoin nuo aumlit siks, ku ei aina toiminu oikein ilman, tuli joku ihmeellinen "vänkyrä" A.
strip_tag() on siks, jos joskus laittaa tän nettiin.
Tiedäkkö muuten, onko täällä ollu PHP:llä tämmöstä aiemmin (näiden meidän lisäks)?
Vänkyrät johtunevat väärästä charsetista. Input-tagitkin voisi sulkea, <input /> ;). Jos joku kaipaa pelkkää funkkaria niin mainostan tässä omaa versiotani, https://www.ohjelmointiputka.net/koodivinkit/
tsuriga, tiedäkkö, miks meidän kummankaan funkkaria ei hyväksytä tuonne "päälistalle". Onko systeemissä joku fiba, vai eikö nämä vain kelpaa? :O
Niitä hyväksytään köntti kerrallaan ja aika epäsäännöllisin väliajoin.
Ajattelin vain, kun tämänkin kohdan joosain kai näin
Ohjelmointiputka kirjoitti:
Ylläpito tarkistaa sen 0-2 päivän kuluessa, minkä jälkeen vinkki lisätään
Aihe on jo aika vanha, joten et voi enää vastata siihen.