中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决]如何只根据文件的扩展名获取关联程序位置
作者:
标题: [已解决]如何只根据文件的扩展名获取关联程序位置 上一主题 | 下一主题
newxso
初级用户

l i u s s


积分 73
发帖 101
注册 2008-9-17
来自 GZ
状态 离线
『楼 主』:  [已解决]如何只根据文件的扩展名获取关联程序位置

例如已经获取某文件的扩展名为 rar ,如何取得关联程序所在路径(例如:C:\Program Files\WinRAR\WinRAR.exe)?请指教。


根据楼下介绍方法已解决,多谢指点。解决后的代码如下:
@echo off
if "%1"=="" echo 请把文件或文件夹拖到我身上,便可创建快捷方式到桌面上。&&pause>nul&&exit
set "a=%1"
set "name=%~n$a:1%"
set "ext=%~x$a:1%"
if "%ext%"=="" goto FOLDER

for /f "tokens=2 delims==" %%b in ('assoc %ext%') do (
  for /f "tokens=2 delims==" %%c in ('ftype %%b') do set "d=%%c"
)
set "d=%d:"=%"
set "n=%d%"
set "n=%n:~-1%"
if "%n%"=="*" (set "d=%d:~0,-5%") else (set "d=%d:~0,-2%")
set "e=0"

if /i "%ext%"==".vbs" set "e=2"
if /i "%ext%"==".js" set "e=3"
if /i "%ext%"==".doc" set "d=%d:~0,-5%" && set "e=1"
if /i "%ext%"==".xls" set "e=1"
if /i "%ext%"==".ppt" set "e=1"
if /i "%ext%"==".bat" set "d=%SystemRoot%\system32\SHELL32.dll" && set "e=71"
if /i "%ext%"==".cmd" set "d=%SystemRoot%\system32\SHELL32.dll" && set "e=71"

:URL
echo [InternetShortcut] >"%userprofile%\桌面\%name%.url"
echo URL="%a%" >>"%userprofile%\桌面\%name%.url"
echo IconIndex=%e% >>"%userprofile%\桌面\%name%.url"
echo IconFile=%d% >>"%userprofile%\桌面\%name%.url"
exit

:FOLDER
set "d=%SystemRoot%\system32\SHELL32.dll"
dir /a:d "%a%"|find.exe "DIR" >nul
if not errorlevel 1 (set "e=3") else (set "e=0")
goto URL
[ Last edited by newxso on 2008-12-3 at 00:39 ]

   此帖被 +3 点积分     点击查看详情   
评分人:【 tireless 分数: +3  时间:2008-11-30 12:15


2008-11-29 12:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hackate
中级用户





积分 228
发帖 125
注册 2008-8-25
状态 离线
『第 2 楼』:  

@echo off
for /f "tokens=2 delims==" %%a in ('assoc .rar') do (
ftype %%a
)
pause

2008-11-29 12:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: