For Linux版:
#!/usr/local/bin/php
# Author: hutuworm # Date: 20031115
<?phpfunction 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";
?>