Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Tiedostojen uudelleennimeäjä

Kentti [11.08.2006 12:09:12]

#

Tämä koodi uudelleennimeää mitkä tahansa tiedostot (Ainakin mikäli ne ovat apachen document rootissa)
Ideaalinen valokuvien uudelleennimeämiseen. Kamerahan nimeää kuvat esimerkiksi SANY0012, mikä ei ole useinkaan mukava nimi. Tällä skriptillä voit nimetä kansioissa olevat tiedostot esimerkiksi muotoon omat.1, omat.2, jne. Numerot listautuvat laskevassa järjestyksessä.

EDIT:Muokattu, niin että nyt on oikeat koodit molemmissa

PHP-koodi

<?php



  ################################
  # TIEDOSTOJEN UUDELLEENNIMEÄJÄ #
  ################################

  function uudelleennimea_tiedostot($kansio, $nimi="Uusi nimi", $tarkennin="txt", $nimeamattomat="") {
	#Lue hakemisto taulukkoon, jos submit-nappia on painettu.
	if(isset($_POST['submit'])) {
 		$taulukko=scandir($kansio) or die("Hakemistoa ei pystytty lukemaan taulukkoon. Tarkista, että kirjoitit kansion nimen oikein!");
	}


	#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ää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) echo basename($vanhaNimi)." => ".basename($uusiNimi)."<br />";
		else {
			if(basename($vanhaNimi)=="." or basename($vanhaNimi)=="..") continue;
			else {
				echo "<font color='red'>".basename($vanhaNimi)." => ".basename($uusiNimi)."</font>
					***<font color='red'>Uudelleennimeäminen epäonnistui</font><br />";
				break;
			}
		}
	}


  	if($uudelleennimeaminen !=false) echo "<script language='javascript' type='text/javascript'>
						alert('Uudelleennimeäminen onnistui!')
						</script>";
	else echo "<script language='javascript' type='text/javascript'>
						alert('Virhe tapahtui uudelleennimettäessä kuvia!')
						</script>";
  }

?>

HTML-koodi (.php

<?php
  require("kuvannimeaja.php");
?>
<html>
<head>
<title>Tiedostojen uudelleennimeäjä 1.0</title>
</head>

<body>

<form method="post" action="http://localhost/Uudelleennimeaja/tiedostonnimeaja.php">

<p>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. <br />
Huom! Kansion nimessä <strong>EI SAA OLLA</strong> yksinkertaista lainausmerkkiä (').</p>

<input type="text" name="kansio">
<br />

<p>Tiedoston nimi. Tiedostot nimetään tähän tyyliin: jotain.0 , jotain.1 , jotain.2 jne.<br />
Tämä nimi tekee jokaisen tiedoston nimestä yksilöllisen, mikäli uudelleennimeät useita eri<br />
kansioita ja laitat jokaisen kansion kohdalla tähän eri nimen.<br />
Huom! Nimessä <strong>EI SAA OLLA</strong> yksinkertaista lainausmerkkiä (').(Valinnainen)</p>

<input type="text" name="nimi">
<br />

<p>Tiedoston uuden nimen tarkennin (Parhaan laadun takaamiseksi kannattaa laittaa alkuperäinen tarkennin).<br />
Esimerkiksi jpg, jpeg, png, txt, pdf, ym. Älä laita pistettä tarkentimen eteen.(Valinnainen)</p>

<input type="text" name="tarkennin">
<br />

<input type="submit" value="Nimeä uudelleen" name="submit">
</form>

<?php
  $kansio=strip_tags($_POST['kansio']);
  $nimi=strip_tags($_POST['nimi']);
  $tarkennin=strip_tags($_POST['tarkennin']);

  uudelleennimea_tiedostot($kansio, $nimi, $tarkennin);
?>

</body>
</html>

Blaze [11.08.2006 16:04:38]

#

Sama bash-onelinerina: n=1 && for a in *.jpg; do mv "$a" loma$n.jpg; n=$(expr $n + 1); done

siirappi [11.08.2006 16:07:10]

#

Noi lomakkeiden actionit on kivoja.

Hörpeli [12.08.2006 12:22:11]

#

Täyttä paskaa suoraan sanottuna.

Kentti [14.08.2006 09:00:07]

#

Tuli väärä tohon toiseen :P
Editoin sen ny niin, että oikeet koodit

Kentti [14.08.2006 09:04:25]

#

Tuo toimii myös, vaikka uudelleennimettävät tiedostot olisvat jossain hakemistossa työpöydällä. Sellasen kuitenkin huomasin, että se tekee virheen, jos päivittää sivun (sama ku lähettäis samat tiedot)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta