找回密码
 加入
搜索
楼主: chenronting

[效率算法] 【已解决】短文件获取的相关问题。用到Afan的UDF

 火.. [复制链接]
发表于 2010-10-27 21:52:37 | 显示全部楼层
本帖最后由 _ddqs. 于 2010-10-28 01:57 编辑
;XP-SP3测试(操作畸形不件夹)(打开或删除)
#include <Constants.au3>
#include<process.au3>

$_weizi = 'f:\'
$_filename = '爱 什么 是什么........'
DirCreate($_weizi & $_filename & './')
$_filename = ' 爱 什么 是什么........'
DirCreate($_weizi & $_filename & './')


$GetShortName=@TempDir&"\GetShortName.txt"
$foo = RunWait(@ComSpec & " /c dir/x/n "&$_weizi& " |find /i /n "&' "'&$_filename&'">"'&$GetShortName&'"', @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
$i=1
While 1
        $line = FileReadLine($GetShortName,$i)
        If $line="" Then ExitLoop
        $line = StringReplace($line,1,"****************************************")
        $line = StringReplace($line,"*","")
        $line = StringReplace($line,"     ","|")
        ;MsgBox(0,"",$line)
        $filename = StringSplit($line,"|")
        $YES = MsgBox(262144+292,"警告","文件名:"&$filename[2]&@CR&"的短文件为:"&$filename[1] &@CRLF&@CR&@CR&"你将要其删除吗?")
        If $YES="YES" Or $YES=6  Then ;MsgBox(0,"",'"'& $_weizi & $filename[1] &'"')
                _RunDOS('rd /s /q "'& $_weizi & $filename[1] &'."')
        Else
                _RunDOS('start "" "'& $_weizi & $filename[1] &'."') ;ShellExecute('"'& $_weizi & $filename[1] &'."')
        EndIf
        $i+=1
WEnd

If FileExists($GetShortName) Then FileDelete($GetShortName)
发表于 2010-10-27 22:24:48 | 显示全部楼层
本帖最后由 _ddqs. 于 2010-10-28 02:04 编辑
;XP-SP3测试(操作畸形不件夹)(查看——短文件名)
缓冲路径引用不完整
楼下已修复(都是空格惹的祸,随便哪里都可以)
发表于 2010-10-28 01:44:19 | 显示全部楼层
终于找到了!(论坛没“我参与的主题”功能)
;XP-SP3测试(操作畸形不件夹)(查看——短文件名)
#include <Constants.au3>
#include<process.au3>


$_weizi = 'f:\'
;$_filename = '爱 什么 是什么........'
;DirCreate($_weizi & $_filename & './')
$_filename = ' 爱 什么 是什么........'
DirCreate($_weizi & $_filename & './')

MsgBox(0,"取得的短文件名为:",_FileGetShortName($_weizi & $_filename) ) ;(查看——短文件名)


Func _FileGetShortName($FilePath)
        
        $fp=StringSplit($FilePath,"")
        $GetShortName=@TempDir&"\GetShortName.txt" ;在WIN2003试了下,原来写缓冲文件有问题,重改向系统临时目录就OK!要不读无资料就返回 0 .
        $foo = RunWait(@ComSpec & " /c dir/x/n "&$_weizi& " |find /i /n "&' "'&$_filename&'">"'&$GetShortName&'"', @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
        $i=1
        While 1
                $line = FileReadLine($GetShortName,$i)
                If $line="" Then ExitLoop
                $line = StringReplace($line,1,"****************************************")
                $line = StringReplace($line,"*","")
                $line = StringReplace($line,"     ","|")
                $filename = StringSplit($line,"|")
        
                If $filename[2] = $fp[2] Then 
                        If FileExists($GetShortName) Then FileDelete($GetShortName)
                        Return $filename[1]
                EndIf
                
                $i+=1
        WEnd

EndFunc
发表于 2010-10-28 10:42:16 | 显示全部楼层
回复 44# afan
啊?如果有第6行的代码,那它应该自动删除那个目录啊, 但在WIN7确实没删除?
我回家再试一下吧!
发表于 2010-10-28 10:49:02 | 显示全部楼层
回复 49# newuser


    如果短名获取失败那肯定在这里删不了,因为这里删除的就是指向短名的文件夹… :)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-22 11:32 , Processed in 0.065236 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表