发新话题
打印

[原创]批量重命名文件和批量修改文件系统属性的小工具

[原创]批量重命名文件和批量修改文件系统属性的小工具

  文章作者:白色猎人(Unicorn)
文章来源:邪恶八进制安全小组


最近在网上下载了很多漂亮MM的桌面图片,总算是可以饱饱眼福了,哈哈。不过我是个爱整洁的人,看到乱七八糟的文件名心里就不舒服呀,嘿嘿,只能将文件名改了。不过下载的文件实在是太多了,一个个改要累死人的,而且文件的系统属性有时候是隐藏属性,所以自己就写的个批量修改文件名和批量更改文件属性的小工具。程序非常简单,所以没写注释,我相信大家都能看懂的。
引用:
Private Sub Command1_Click()
   Dim i
   For i = 0 To File1.ListCount - 1
     File1.ListIndex = i
     If Check1.Value = 0 And Check2.Value = 0 And Check3.Value = 0 Then
        SetAttr Text1.Text, vbNormal
     End If
   
     If Check1.Value = 1 And Check2.Value = 0 And Check3.Value = 0 Then
       SetAttr Text1.Text, vbReadOnly
     End If
   
     If Check1.Value = 0 And Check2.Value = 1 And Check3.Value = 0 Then
       SetAttr Text1.Text, vbHidden
     End If
   
     If Check1.Value = 0 And Check2.Value = 0 And Check3.Value = 1 Then
       SetAttr Text1.Text, vbSystem
     End If
   
     If Check1.Value = 1 And Check2.Value = 1 And Check3.Value = 0 Then
       SetAttr Text1.Text, vbReadOnly + vbHidden
     End If
   
     If Check1.Value = 1 And Check2.Value = 0 And Check3.Value = 1 Then
       SetAttr Text1.Text, vbReadOnly + vbSystem
     End If
   
     If Check1.Value = 0 And Check2.Value = 1 And Check3.Value = 1 Then
       SetAttr Text1.Text, vbHidden + vbSystem
     End If
   
     If Check1.Value = 1 And Check2.Value = 1 And Check3.Value = 1 Then
       SetAttr Text1.Text, vbReadOnly + vbHidden + vbSystem
     End If
   Next i
   MsgBox "修改属性成功", vbInformation + vbOKOnly, "成功"
End Sub
Private Sub Command2_Click()
   Dim i
   Dim old1
   Dim new1
   Dim mm
   mm = MsgBox("你真的要重命名这些文件吗?", vbQuestion + vbYesNo, "重命名")
   If mm = vbYes Then
     For i = 0 To File1.ListCount - 1
        File1.ListIndex = i
        old1 = File1.Path & "\" & File1.FileName
        new1 = File1.Path & "\" & Trim(Text3.Text) & i & "." & LCase(Trim(Text2.Text))
        Name old1 As new1
     Next i
     MsgBox "重命名文件成功", vbInformation + vbOKOnly, "成功"
   End If
   File1.Refresh
End Sub

Private Sub Dir1_Change()
  File1.Path = Dir1.Path
  Text1.Text = File1.Path
End Sub
Private Sub Drive1_Change()
   On Error GoTo err1
   Dir1.Path = Drive1.Drive
   Exit Sub
err1:
   MsgBox "请插入磁盘" & UCase(Drive1.Drive), vbOKCancel + vbExclamation, "插入磁盘"
   Drive1.Drive = "C:\"
   Dir1.Path = Drive1.Drive
   File1.Path = Dir1.Path
End Sub
Private Sub File1_Click()
   Text1.Text = File1.Path & "\" & File1.FileName
End Sub
Private Sub Form_Load()
   Text1.Text = ""
   Text2.Text = ""
   Text3.Text = ""
End Sub
Private Sub Form_Unload(Cancel As Integer)
   Dim back
   back = MsgBox("你真的要退出本程序吗?", vbYesNo + vbExclamation, "退出")
   If back = vbYes Then
     End
   Else
     Cancel = 1
   End If
End Sub
此程序纯属练手用,高手看了可不要笑哦。偶还是菜鸟,HOHO
青铜的钝剑:我是没有眼泪的人 为了保护自己 今后我可以对任何人残忍 巫师的披风:我不怕死 因为我一直对它充满着无尽的好奇 想亲眼看一下死之后会是什么←目前状态 耀眼的强光:我最擅长从零开始创造世界 所以从来不怕失败 它最多也就让我一无所有

TOP

  文章作者:netcloud
文章来源:邪恶八进制安全小组

想发一个主题贴,各个版块过了一遍才发现都不让发,只好找一个“拖拉机”拖着。
这是我的第一个贴子。
自己编写的一个PHP程序,用来合并一个目录中所有文件及子目录,并保持目录结构不变。考虑到经常上传个论坛到空间,上千个文件,速度很慢,因此而写。
程序比较粗糙但自认为还是比较实用的。
<?
$tm1=time();

     echo "<H3 align=center>PHPPACK1.0</H3><p>本程序可以合并指定目录中所有文件及子目录,你可以在本地使用该程序合并众多文件,这样你在向PHP空间上传时只需上传这一个文件,大大节省上传时间。同样,要下载PHP空间上众多文件之前可以将本程序上传,然后在服务器上执行本程序,将它们合并成为一个文件,方便下载。合并时不会删除原文件。<br>要还原这些文件请使用phpunpack.php。<br>注意:指定压缩后的文件名要确保不与现有文件重名,否则将<font color=&#39;red&#39;>不加提示地覆盖</font>同名文件!<br>使用完后,请从你的网站上删除本程序,以免被他人恶意使用。<br>本程序可能会对您的数据造成破坏,对此<a href=&#39;http://winning.uni.cc&#39;>云岭e站</a>及<a href=&#39;mailto:netcloud@163.com&#39;>netcloud</a>不负任何法律责任。";
global  $all,$curpath,$num,$filename,$dir;
if(trim($dir)=="")
{
echo &#39;<form name=form1 method=post action=phppack.php> 请输入要压缩的目录名<input name=dir type=text id=dir>(压缩当前目录请输入"."--不包括引号) <br>
请输入压缩之后的文件名<input name=filename type=text id=fn value="current.pak"> <input type=submit name=Submit value=合并></form><br>
<center>本程序由<a href="http://winning.uni.cc">云岭e站</a>制作,有问题请与<a href="mailto:netcloud@163.com">netcloud</a>联系。</center><br>&#39;;
exit;
}
else
{
if(trim($dir)==&#39;.&#39;) $dir=&#39;&#39;;
if(!($all=fopen($filename,"wb")))
{ echo "不能创建合并文件,请确定当前目录您具有写权限!\n"; exit;}
$curpath="./";
fwrite($all,$curpath.$dir."]]]]d]]]] [[[[");
packdir($dir);
echo "全部处理完毕!共处理目录及文件$num 个!";
echo "<br>
<center>本程序由<a href=&#39;http://winning.uni.cc&#39;>云岭e站</a>制作,有问题请与<a href=&#39;mailto:netcloud@163.com&#39;>netcloud</a>联系。</center><br>";
exit;
}

function  packdir($dir)
{
global  $all,$curpath,$num;
if(!chdir($dir))
  { echo "指定的目录$dir"."不存在或不是一个目录!\n";return; }
      $curpath=$curpath.$dir."/";
if(!($curdir=opendir(&#39;.&#39;)))
  { echo "读取目录$dir"."失败!\n"; return; }

      echo "正在处理目录$curpath ...  <br>";

while($curfiles=readdir($curdir)){
  if (trim($curfiles)=="."||trim($curfiles)==".."||trim($curfiles)==_FILE_||trim($curfiles)==trim($filename))
    continue;
$tm2=time();
if($tm2-$tm1>25) {$tm1=$tm2;set_time_limit(25);}//此处是防止处理文件数量很多时,服务器执行程序超时限制。

$num++;
  if(is_dir($curfiles))
   {
    fwrite($all,$curpath.$curfiles."]]]]d]]]] [[[[");
    packdir($curfiles);
   }
  else
   {
    $curfsize=filesize($curfiles);
      $curf=fopen($curfiles,"rb");
      $contents=fread($curf,$curfsize);
    fwrite($all,$curpath.$curfiles."]]]]".$curfsize."]]]]".$contents."[[[[");
      fclose($curf);
   }
  }
      echo "目录$curpath 处理完毕 :) <p>";
$len=strlen($curpath);
#echo "$len\t";
  $curpath=substr($curpath,0,$len-1);
#echo "$curpath\t";
  $pos=strrpos($curpath,"/");
#echo "$pos\t";
  $curpath=substr($curpath,0,$pos+1);
#echo "$curpath<p>";
closedir($curdir);
chdir("..");
}
?>

TOP

  文章作者:netcloud
文章来源:netcloud

<?
$tm1=time();
     echo "本程序可以将用phppack.php合并的众多小文件解压还原。还原后文件目录结构不变。<br>注意:在解压过程中如果遇到同名文件将<font color=&#39;red&#39;>不加提示地覆盖</font>同名文件!<br>使用完后,请从你的网站上删除本程序,以免被他人恶意使用。<br>本程序可能会对您的数据造成破坏,对此<a href=&#39;http://winning.uni.cc&#39;>云岭e站</a>及<a href=&#39;mailto:netcloud@163.com&#39;>netcloud</a>不负任何法律责任。<br>";
if($dir=="")
{
echo &#39;<form name="form1" method="post" action="phpunpack.php"> 请输入要解压的源文件名<input name="dir" type="text" id="dir">  <input type="submit" name="Submit" value="解压"></form>&#39;;
}
else
{

if(!($allh=fopen($dir,"rb")))
{ echo "未能打开源文件,可能源文件不存在或你不具有该权限!\n"; exit;}
echo "开始处理!";
$df=fread($allh,filesize($dir));
$flines=explode("[[[[",$df);
while(list($num,$fline)=each($flines))
{
$tm2=time();
if($tm2-$tm1>20) {$tm1=$tm2;set_time_limit(30);}//此处是防止处理文件数量很多时,服务器执行程序超时限制。

  list($fname,$fattr,$contents)=split("]]]]",$fline);
    if($fname=="") break;
    if($fattr=="d")
    {
echo "创建目录 $fname <br>";
@mkdir($fname,0755);
    }
    else
    {
   echo "创建文件 $fname ";
   if(!($curfh=fopen($fname,"wb")))
    { echo "创建文件$fname.失败,可能当前目录权限不正确\n";
     exit;
    }   
    fwrite($curfh,$contents);
    fclose($curfh);
   echo "成功!<br>";
    }
}
fclose($allh);
echo "全部处理完毕!共处理目录及文件$num 个!";
echo "<br>
<center>本程序由<a href=&#39;http://winning.uni.cc&#39;>云岭e站</a>制作,有问题请与<a href=&#39;mailto:netcloud@163.com&#39;>netcloud</a>联系。</center><br>";

}
?>

TOP

以上两个文件名分别为 第一个phppack.php  第二个phpunpack.php
经过验证,在某些WEB服务器中不能正常运行,主要问题是该服务器是windows环境,其php.ini文件中register_globals设置为OFF,只要设置为ON就没问题了。

TOP

发新话题