本帖最后由 afan 于 2010-4-3 20:17 编辑
畸形文件夹就是在Windows中无法或难以通过正常途径进行建立、查看、删除等操作的小强文件夹。
这里以结尾带点的字码畸形为例讨论如何获取畸形文件夹的短文件名,以拓展为Au3使用(如重命名、移动畸形文件夹等操作)。
;
以下为我做的简单测试
;
直接用 FileGetShortName() 不行,因为它不承认畸形文件夹的存在...
;
用 for /f "delims=" %%a in ("畸形文件夹路径") do @echo %%~sa 也不行,因为在这里畸形文件夹路径中的畸形文件夹必须以短文件名表示(我就是不知道短文件名,真晕)
;
直接自己根据规则命名,貌似这8个字符的命名规则很难办,并非简单的 xxxxxx~i,对于短于8个字节的畸形文件夹名要添加字母及数字,还有前8个字节相同的还要递加,如xxxxxx~2、xxxxxx~3等,还有小数点的位置等等,此路不通……
;
最后想到的是,如果畸形文件夹所在的路径为正常目录,则可以先dos进入此目录,然后dir /x来获取畸形文件夹的短文件名,当然也可以采取下面的查找方式。再通过回显得到这该死的短名。
for /f "tokens=4 delims= " %%a in ('dir /x "畸形文件夹所在的正常目录"^| findstr "畸形文件夹"') do @echo %%a
;
附件是本人写的,需要的可以参考
不知有没有高手有简单的方法?希望能很轻松的送出100金钱,呵呵~
;===========================================;
以下几个关于畸形文件夹操作的例子,可以给测试提供条件
;创建畸形文件夹 ab.$a = 'ab.'
RunWait(@ComSpec & ' /C Md "' & $a & '."', '', 0)
If FileExists($a & '.\') Then MsgBox(64, '完成', '已成功创建文件夹:"' & $a & '" 文件夹')
;
;打开畸形文件夹 ab.$a = 'ab.'
RunWait('explorer.exe "' & $a & '."')
;
;复制文件到畸形文件夹 ab.$a = 'ab.'
RunWait(@ComSpec & ' /C copy "' & @ScriptFullPath & '" "' & $a & '."', '', 0)
If FileExists($a & '.\' & @ScriptName) Then MsgBox(64, '完成', '已成功复制文件:"' & @ScriptName & '" ')
;
;删除畸形文件夹 ab.$a = 'ab.'
RunWait(@ComSpec & ' /C rd "' & $a & '." /s /q', '', 0)
If Not FileExists($a & '.\') Then MsgBox(64, '完成', '已成功删除文件夹~ ')
; |