如何获取已知程序所在的文件夹名?(已解决)16楼全码
本帖最后由 夜猫猫 于 2011-7-18 21:11 编辑搜索.找不到相应贴.只好再发个贴
以知道程序完全路径.怎么获取程序所在文件夹名
如:已经获得程序完全路径
C:\Windows\notepad.exe
C:\Windows\System32\cmd.exe
怎么获取windows或者System32这个文件夹名? #Include <WinAPIEx.au3>
_WinAPI_PathRemoveFileSpec 回复 2# netegg #include <file.au3>
Local $file ='C:\Windows\notepad.exe'
Local $fileinfo = _File_Get_Ext($file)
MsgBox(0,'',$fileinfo & $fileinfo)
Func _File_Get_Ext($file)
Local $testpath, $szDrive, $szDir, $szFName, $szExt
$testpath = _PathSplit($file, $szDrive, $szDir, $szFName, $szExt)
Return $testpath
EndFunc 本帖最后由 netegg 于 2011-7-18 07:37 编辑
回复 3# tubaba
说实话,没弄太明白,楼主要的是什么,除了文件名的文件夹还是什么,你这样不是不行,如果是全路径删除文件名的话,会稍微麻烦点,另外我一直没具体确定_pathsplit对不带扩展名的文件或者带.的及异形的文件夹会如何判断 只查找最后一个路径分隔符位置然后取左侧字符串就可以了吧。 本帖最后由 netegg 于 2011-7-18 10:20 编辑
回复 5# kevinch
怎么取?string*?
while 1
if stringright($string, 1) = '\' then return stringtrimright($string,1)
$string =stringtrimright($string,1)
wend
这样? 本帖最后由 夜猫猫 于 2011-7-18 11:23 编辑
因为论坛里的菜单大部分都是手动添加。我想自动加。
用于搜索游戏。比如。搜索网络游戏目录下的EXE文件。返回游戏的运行程序与游戏名(即程序所在的文件夹名)
经过一系列判断后自动加入数据库或INI文件中。 搜索?
#Include <File.au3>
_FileListToArray 回复kevinch
怎么取?string*?
while 1
if stringright($string, 1) = '\' then return stringtrimri ...
netegg 发表于 2011-7-18 10:17 http://www.autoitx.com/images/common/back.gif
先stringsplit(文件全路径名,"\"),然后取出数组最后一项的内容,计算出长度,再从全路径名中stringleft去掉这个长度的文本即可了吧。
或者将数组重新拼起来,除去最后一项即可。 windows.old这类呢 没懂楼上所说的 本帖最后由 夜猫猫 于 2011-7-18 13:30 编辑
文件名.文件全路径都可以获取.
论坛有个贴
http://www.autoitx.com/forum.php?mod=viewthread&tid=8157&highlight=%CE%C4%BC%FE%C3%FB
这个可以做到.
问题是怎么获得\文件夹名\文件名 两个\之间的数值?
stringright是返回字符串右起指定数量的字符.
但这个文件夹名字符数不能确定.不一定多长 本帖最后由 netegg 于 2011-7-18 13:58 编辑
Func _filegetpath($filefullname)
Local $ret
If Not (StringInStr(FileGetAttrib($filefullname), 'D')) Or (StringRight($filefullname, 1) = '\') Then
Dim $path = StringSplit($filefullname, '\')
For $i = 1 To $path - 1
$ret &= $path[$i] & '\'
Next
Return StringTrimRight($ret, 1)
Else
Return StringTrimRight(StringReplace($filefullname & '\', '\\', '\'), 1)
EndIf
EndFunc ;==>_filegetpath
大概可以了 本帖最后由 夜猫猫 于 2011-7-18 20:46 编辑
不行哦.只相当与http://www.autoitx.com/forum.php?mod=viewthread&tid=8157&highlight=%CE%C4%BC%FE%C3%FB中的 _getdir($spath)
获取到路径D:\autoit3\Aut2Exe
需要在次删除Aut2Exe之前的数值
#include <file.au3>
Local $file ='D:\autoit3\Aut2Exe\A3X2EXE.exe'
Local $fileinfo = _filegetpath($file)
MsgBox(0,'',$fileinfo)
Func _filegetpath($filefullname)
Local $ret
If Not (StringInStr(FileGetAttrib($filefullname), 'D')) Or (StringRight($filefullname, 1) = '\') Then
Dim $path = StringSplit($filefullname, '\')
For $i = 1 To $path - 1
$ret &= $path[$i] & '\'
Next
Return StringTrimRight($ret, 1)
Else
Return StringTrimRight(StringReplace($filefullname & '\', '\\', '\'), 1)
EndIf
EndFunc ;==>_filegetpath
正则怎么匹配最后一个\与倒数第2个\之间的数值?
Local $file ='D:\autoit3\Aut2Exe\A3X2EXE.exe'
$path = StringSplit($file, '\', 1)
For $i = 1 To $path - 1
MsgBox(0,'',$path[$i])
Next
Local $file ='D:\autoit3\Aut2Exe\A3X2EXE.exe'
$a_Arr=StringSplit($file,"\")
$fileinfo = $a_Arr
MsgBox(0,'',$fileinfo)难道要这个?
页:
[1]
2