Sorter II

amp_god 30.08.05 21:04

Järjestää komentorivillä annetussa kansiossa olevat tiedostot päätteen mukaan uusiin alikansioihin

 Tekstiversio  Arvo: 2 (2 ääntä)  Äänestä: +  -
### sorter.php ###
<?php
## Alustetaan muuttujat ##
$kansio = array();
if(file_exists($argv[1])) { $kohde = $argv[1]; } else { print("Anna oikea kohde.\n"); die(); }
$logi = fopen("Logitiedosto.txt", "a");
$protected = array("sorter.php", "Logitiedosto.txt");
##########################

function avaa_kansio($path)
{
  global $kansio, $protected;
  print("Avataan kansio $path...\n");
  $kansio[$path] = opendir($path);
  if(!$kansio[$path]) { print("  Kansion avaaminen epäonnistui...\n"); }
  while($tiedosto = readdir($kansio[$path]))
  {
    if($tiedosto == ".") continue;
    if($tiedosto == "..") continue;
    if(in_array($tiedosto, $protected)) continue;
    if(is_file("$path/$tiedosto")) {
      kasittele("$path/$tiedosto", "$tiedosto", tpaate($tiedosto));
      continue;
    }
    if(is_dir("$path/$tiedosto")) { avaa_kansio("$path/$tiedosto"); continue; }
  }
  closedir($kansio[$path]);
}

function tpaate($tiedosto) {
  if($tiedosto[0] != ".") {
    $temp = explode(".", $tiedosto);
    $size = sizeof($temp);
    if($size <= 1) { $out = "NONE"; } else { $out = strtolower($temp[$size - 1]); }
  } else {
    $out = "HIDDEN";
  }
  return $out;
}

function kasittele($fullpath, $file, $tpaate)
{
  global $logi;
  $dest = "$tpaate/$file";
  $exists = false;
  print("  yritetään siirtää $fullpath --> $dest...");
  $move = false;
  if(!file_exists($tpaate)) { mkdir("$tpaate"); }
  if(!file_exists($dest)) {
    $move = rename("$fullpath", "$dest");
  } else { $exists = true; }
  if($move) { print("OK\n"); }
  if(!$move) { print("Failed\n"); }
  if($exists) { print("    -- Ei ylikirjoiteta...\n"); }
  fwrite($logi, "$dest :: $fullpath\n");
}

avaa_kansio($kohde);
fclose($logi);
?>
## /sorter.php ##

Ohjelman käyttäminen:
php sorter.php /kansio/mikä/järjestetään uudelleen

Jos kansiossa on esim:
ekatiedosto.paate
tokatiedosto.paate2
kolmas.paate

järjestää ohjelma ne seuraavasti: paate/ekatiedosto.paate, paate/kolmas.paate, paate2/tokatiedosto.paate2

!!! Varoituksen sana; ohjelma käyttää siirtokomentoa; joten elä ihmeessä tee tätä
kotikansiossa/rootissa/missään todella tärkeässä kansiossa missä kaikki tavarat pitää
olla just oikeassa paikassa !!!
Tarkoitettu lähinnä "varastojen" siivoamiseen :)

Dex 21:43 14.9.05 
Hyvin kommentoitu. :)
amp_god 22:12 15.9.05 
Ei toi perus php mitään monimutkainen kieli oo :)
sehä kommentoi itse itsensä :)
editoitu: 11:44 1.10.05
rusinax 11:43 1.10.05 
Eikö voi tehdä samaa manuaalisesti? Tai automaattisesti (ainakin windowsissa)