netegg
发表于 2010-4-6 13:23:14
回复 77# afan
那就记不得了,我再好好翻翻,印象里有
afan
发表于 2010-4-6 14:04:49
本来长文件名和短文件名就没有必然的对应关系(后6字符)
只是在 $mtf 目录结构里生成了一个标记而已,
用 ...
dtooboss 发表于 2010-4-6 12:49 http://www.autoitx.com/images/common/back.gif
谢谢,有空研究下~
afan
发表于 2010-4-6 14:05:45
回复afan
那就记不得了,我再好好翻翻,印象里有
netegg 发表于 2010-4-6 13:23 http://www.autoitx.com/images/common/back.gif
好的,谢谢~
superflq
发表于 2010-4-6 16:27:14
学习了,谢谢A大
C.L
发表于 2010-4-6 16:47:49
本帖最后由 C.L 于 2010-4-6 16:52 编辑
本来长文件名和短文件名就没有必然的对应关系(后6字符)
只是在 $mtf 目录结构里生成了一个标记而已,
用 ...
dtooboss 发表于 2010-4-6 12:49 http://www.autoitx.com/images/common/back.gif
SetFileShortName,这个好象只能在NTFS文件系统上用吧,FAT应该是用不了的。
另处请教一下,这个畸形文件的句柄:$hFile 怎么获得?对这个句柄,我不知道怎么获得。
Au3里的filegetshortname 应该就是调用GetFileShortName的吧?这个我是猜的。呵呵~
dtooboss
发表于 2010-4-6 17:35:23
SetFileShortName,这个好象只能在NTFS文件系统上用吧,FAT应该是用不了的。
另处请教一下,这个畸形文 ...
C.L 发表于 2010-4-6 16:47 http://www.autoitx.com/images/common/back.gif
这里有详细的程序例子。往下看。
http://topic.csdn.net/u/20080315/17/4552bc27-9b31-44bf-a77c-f4cca34f44ce.html
afan
发表于 2010-4-6 17:37:20
这里有详细的程序例子。往下看。
dtooboss 发表于 2010-4-6 17:35 http://www.autoitx.com/images/common/back.gif
这个看过,一看局限于NTFS或底层驱动立即返回~
dtooboss
发表于 2010-4-6 17:53:19
下面是测试结果
dtooboss
发表于 2010-4-6 18:01:55
这个又命名了几个
dtooboss
发表于 2010-4-6 18:15:59
这个看过,一看局限于NTFS或底层驱动立即返回~
afan 发表于 2010-4-6 17:37 http://www.autoitx.com/images/common/back.gif
底层驱动可以用dllcall调用,肯定不是难事,在au3里也就几行语句。
fat基本可以淘汰了。
afan
发表于 2010-4-6 18:18:51
底层驱动可以用dllcall调用,肯定不是难事,在au3里也就几行语句。
fat基本可以淘汰了。
dtooboss 发表于 2010-4-6 18:15 http://www.autoitx.com/images/common/back.gif
U盘大多是FAT,硬盘的话也应保留一个FAT分区~
底层驱动我是鸟都不懂,还是用回我的得~
C.L
发表于 2010-4-6 22:34:52
回复 88# afan
呵呵,看来想要在Win下面用的话,想找个稳定一点的方法有困难,对这个畸形文件夹,还是DOS有用~~
afan
发表于 2010-4-6 22:37:31
回复afan
呵呵,看来想要在Win下面用的话,想找个稳定一点的方法有困难,对这个畸形文件夹,还是DOS有 ...
C.L 发表于 2010-4-6 22:34 http://www.autoitx.com/images/common/back.gif
呵呵,没办法呀~ 你那个琢磨出了看得到却拿不到,唉~
天堂泪吻泪
发表于 2010-4-6 23:07:57
试试这个行不行???哈哈!!!!
在下发现,在下使用_fileslisttoarray这个东东是可以看到的!再加上Afan前辈有那个_FileGetShortName函数,就可以这样子了!#include <File.au3>
#include <Array.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GUIListBox.au3>
#Region ### START Koda GUI section ### Form=E:\4_au3\K型文件夹\畸形文件夹.kxf
$Form1 = GUICreate("畸形文件夹", 394, 251, 363, 359)
$Label1 = GUICtrlCreateLabel("要搜索畸形文件夹的路径:", 8, 8, 139, 17)
$Input1 = GUICtrlCreateInput("", 152, 6, 177, 21)
GUICtrlSetState(-1, $GUI_DISABLE)
$Button1 = GUICtrlCreateButton("浏览", 336, 4, 51, 25)
$Group1 = GUICtrlCreateGroup("畸形文件夹", 8, 32, 377, 193)
$List1 = GUICtrlCreateList("", 16, 48, 361, 162)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$var = FileSelectFolder("请选择:", "")
If Not @error Then
GUICtrlSetData($List1,"")
GUICtrlSetData($Input1, $var)
$_var = StringSplit($var, "\")
If $_var <= 2 Then
$dir = _FileListToArray($var)
For $i = 1 To $dir
$kfile = StringRight($dir[$i], 1)
If $kfile = "." Then
$k=StringSplit(_FileGetShortName($var & $dir[$i]),"\")
GUICtrlSetData($List1, $k [$k]& "|")
EndIf
Next
Else
$var&="\"
$dir = _FileListToArray($var)
For $i = 1 To $dir
$kfile = StringRight($dir[$i], 1)
If $kfile = "." Then
$k=StringSplit(_FileGetShortName($var & $dir[$i]),"\")
GUICtrlSetData($List1, $k[$k] & "|")
EndIf
Next
EndIf
EndIf
EndSwitch
WEnd
Func _FileGetShortName($FilePath, $Flag = 1)
$FilePath = StringRegExpReplace($FilePath, '\\+$', '')
If $Flag <> 1 Then $Flag = 0
If FileExists($FilePath) And Not StringRegExp($FilePath, '\.+$') Then
If $Flag = 1 Then Return FileGetShortName($FilePath, 1)
Return StringRegExpReplace(FileGetShortName($FilePath, 1), '.+\\', '')
EndIf
Local $Path, $File
If StringInStr($FilePath, ':') Then
$Path = StringRegExpReplace($FilePath, '\\[^\\]+$', '')
$File = StringRegExpReplace($FilePath, '.+\\', '')
Else
$Path = @ScriptDir
If StringInStr($FilePath, '\') Then $Path &= '\' & StringRegExpReplace($FilePath, '\\[^\\]+$', '')
$File = StringRegExpReplace($FilePath, '.+\\', '')
EndIf
$File = StringRegExpReplace($File, '(\.|\+|\(|\)|\{|\}|\[|\]|\^|\$)', '\\$1')
Local $str = '', $too
$too = Run(@ComSpec & ' /c dir /A /x "' & $Path & '"', '', 0, 2)
While 1
Sleep(1)
$str &= StdoutRead($too)
If @error Then ExitLoop
WEnd
If Not StringRegExp($str, '<DIR>.+\s' & $File & '\r') Then Return SetError(1, 0, 0)
Local $ShortName = StringRegExpReplace($str, '(?s).+<DIR>\s+?([^\s]+)\s+?' & $File & '.+', '$1')
If @extended = 0 Then Return SetError(1, 0, 0)
If $Flag = 1 Then Return FileGetShortName($Path, 1) & '\' & $ShortName
Return $ShortName
EndFunc ;==>_FileGetShortName
afan
发表于 2010-4-6 23:17:04
回复 91# 天堂泪吻泪
用我的本来就是可以啊,我就是想看看有没有别的方法~ O(∩_∩)O~
页:
1
2
3
4
5
[6]
7
8
9
10