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";
?>