For Linux版:
#!/usr/local/bin/php
# Author: hutuworm # Date: 20031115
<?php function traveldir($dirname) { if($dirname[strlen($dirname)-1]!='/') $dirname.='/'; $dirhandle=opendir($dirname); while($file=readdir($dirhandle)) { if($file=='.'||$file=='..') continue; if(is_dir($dirname.$file)) { $newname=quoted_printable_decode(ereg_replace("%","=",$dirname.$file)); $realname='"'.$newname.'"'; $oldname='"'.$dirname.$file.'"'; if($oldname!=$realname) system("mv $oldname $realname"); traveldir($newname.'/'); } else continue; } closedir($dirhandle); }
if(isset($argv[1]) && is_dir($argv[1])) { $targetdir=$argv[1]; traveldir($targetdir); } else echo "Usage: ./dirdecode.php /path/to/dir \n";
?>
For Windows版:
#!/usr/local/bin/php -a
# Author: hutuworm # Date: 20031115
<?php
//遍历目录并还原中文目录名称 function traveldir($dirname) { if($dirname[strlen($dirname)-1]!='\\') $dirname.='\\'; $dirhandle=opendir($dirname); while($file=readdir($dirhandle)) { if($file=='.'||$file=='..') continue; if(is_dir($dirname.$file)) { $newname=quoted_printable_decode(ereg_replace("%","=",$file)); $oldname='"'.$dirname.$file.'"'; if($file!=$newname) { $realname='"'.$newname.'"'; system("ren $oldname $realname"); } traveldir($dirname.$newname.'\\'); } else continue; } closedir($dirhandle); }
if(isset($argv[1]) && is_dir($argv[1])) { $targetdir=$argv[1]; traveldir($targetdir); } else echo "Usage: c:\php\php dirdecode.php \path\\to\dir \n";
?>

|