_ddqs. 发表于 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&@CR&"的短文件为:"&$filename &@CRLF&@CR&@CR&"你将要其删除吗?")
      If $YES="YES" Or $YES=6Then ;MsgBox(0,"",'"'& $_weizi & $filename &'"')
                _RunDOS('rd /s /q "'& $_weizi & $filename &'."')
      Else
                _RunDOS('start "" "'& $_weizi & $filename &'."') ;ShellExecute('"'& $_weizi & $filename &'."')
      EndIf
      $i+=1
WEnd

If FileExists($GetShortName) Then FileDelete($GetShortName)

_ddqs. 发表于 2010-10-27 22:24:48

本帖最后由 _ddqs. 于 2010-10-28 02:04 编辑

;XP-SP3测试(操作畸形不件夹)(查看——短文件名)
缓冲路径引用不完整
楼下已修复(都是空格惹的祸,随便哪里都可以)

_ddqs. 发表于 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 = $fp Then
                        If FileExists($GetShortName) Then FileDelete($GetShortName)
                        Return $filename
                EndIf
               
                $i+=1
        WEnd

EndFunc


newuser 发表于 2010-10-28 10:42:16

回复 44# afan
啊?如果有第6行的代码,那它应该自动删除那个目录啊, 但在WIN7确实没删除?
我回家再试一下吧!

afan 发表于 2010-10-28 10:49:02

回复 49# newuser


    如果短名获取失败那肯定在这里删不了,因为这里删除的就是指向短名的文件夹… :)
页: 1 2 3 [4]
查看完整版本: 【已解决】短文件获取的相关问题。用到Afan的UDF