1. Anasayfa
  2. Yazılım

Php ile Toplu Klasör/Dosya İsmi Değiştirme

Php ile Toplu Klasör/Dosya İsmi Değiştirme
0

Merhaba bugün php ile toplu klasör ismi değiştirme işlemini nasıl yapabileceğimizden bahsedeceğim. Konu birden fazla dosya veya klasör olunca, elle değiştirmek bir işkenceye dönüşüyor ve benim elimdeki klasörler sayısal olarak sıralıydı ve ayrıca elimde de o klasörlerin ne olduğuna dair bir referans dosyası (.txt şekilde alt alta sıralamış) bulunuyordu, bütün dosyaları tek tek elle değiştirmek yerine elimdeki referans dosyası ile bütün hepsini hızlı bir şekilde değiştirmek mümkün olabilirdi.

Elimdeki Klasörlerin Yapısı

1’den 403’e kadar sıralı şekilde

Vermek İstediğim Değerler

Yine 1’den 403’e sıralı şekilde ama bu sefer değerleri var

Toplu Klasör Değiştirme İşlemi

  • Yapacağımız ilk işlem klasörlerin olduğu dizine ulaşmak.
$dir = "77 css/"; //toplu işlem yapacağımız klasörün dizini
$directory = scandir($dir);

var_dump($directory);

Sonuç: 
/*
array(406) { 
[0]=> string(1) "." 
[1]=> string(2) ".." 
[2]=> string(9) ".DS_Store" 
[3]=> string(3) "001" 
[4]=> string(3) "002".....
Şekilinde devam eden klasörlerimizi almış olduk
*/
  • Dizine ulaştık fakat istemediğimiz dosyalar var onları görmezden gelelim
foreach ($directory as $file) {//istediğimiz dosyaları görmezden geldik
	if ($file =='.' || $file == '..' || $file == '.DS_Store') continue; 
	$fileList[] = $file;
}
  • Şimdi referans dosyamızı tanımlayalım
$changeRef = file('ref.txt', FILE_IGNORE_NEW_LINES); 
//klasörlerin yeni değerleri üstten alta doğru
  • Son aşama aldığımız klasörleri referans dosyasına göre topluca yeniden isimlendirmek için döngüye sokuyoruz ve kodumuzun son hali şu şekilde oluyor.
$dir = "77 css/"; //toplu işlem yapacağımız klasörün dizini
$directory = scandir($dir);

foreach ($directory as $file) {//istediğimiz dosyaları görmezden geldik
	if ($file =='.' || $file == '..' || $file == '.DS_Store') continue; 
	$fileList[] = $file;
}

$changeRef = file('ref.txt', FILE_IGNORE_NEW_LINES); 
//klasörlerin yeni değerleri üstten alta doğru
$number = 0;

foreach ($changeRef as $value) {
	if(rename($dir.$fileList[$number], $dir.$value)) {
		echo "{$fileList[$number]} Değiştirildi. Yeni Adı: {$value}  <br />";
		$number++;
	}else {
		echo "{$fileList[$number]} Değiştirilemedi.";
	}

}

Sonuç

Klasörleri belirttiğimiz değerlere göre isimlerini değiştirmeyi başarmış olduk.

1’den 403’e kadar belirttiğimiz değeleri aldılar.
Paylaş

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir