中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-02 00:25
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教,BAT文件关联,问题!(多谢electronixtar 已解决) 查看 1,545 回复 8
楼 主 请教,BAT文件关联,问题!(多谢electronixtar 已解决) 发表于 2006-09-16 01:42 ·  中国 黑龙江 齐齐哈尔 中移铁通
初级用户
积分 30
发帖 11
注册 2006-06-11 17:19
20年会员
UID 56883
状态 离线
我想用BAT做文件关联,可是有个小问题,请教高手,帮忙解决!

例如本人想把 .jsb文件,关联成用记事本打开。下面是命令,在DOS命令提示符下可以实现
Assoc .jsb=jsb
Ftype jsb=C:\WINDOWS\system32\notepad.exe %1

但本人想用BAT实现,批处理关联文件,下面是BAT脚本
@ECHO off
cls
color B
ECHO.
ECHO JSB文件关联
ECHO.
pause

Assoc .JSB=JSB
Ftype JSB=C:\WINDOWS\system32\notepad.exe %1

ECHO.
ECHO JSB文件关联成功
ECHO.
pause
exit

问题,本人是用样的命令,在命令提示符下可以实现,在BAT中无法实现。为什么,在命令提示符下,可以给定义1%的变量,在BAT中不能实现1%的变量,不能实现1%的变量,打开后是空的! 请高手告诉我怎么解决,我应该怎么写BAT,我觉得我是书写格式错误。

[ Last edited by 2691614 on 2006-9-16 at 05:44 ]
2 发表于 2006-09-16 03:08 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
20年会员
UID 42173
性别 男
状态 离线
用 ^%

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
3 发表于 2006-09-16 03:47 ·  中国 黑龙江 齐齐哈尔 中移铁通
初级用户
积分 30
发帖 11
注册 2006-06-11 17:19
20年会员
UID 56883
状态 离线
谢谢你,我这么写的 BAT
@ECHO off
cls
color B
ECHO.
ECHO JSB文件关联
ECHO.
pause


Assoc .JSB=JSB
Ftype JSB=C:\WINDOWS\system32\notepad.exe ^%1

ECHO.
ECHO JSB文件关联成功
ECHO.
pause
exit

可是还是无法控制 1%的变量,在命令提示符下可以定义C:\WINDOWS\system32\notepad.exe %1 在BAT 只是C:\WINDOWS\system32\notepad.exe 没有1%,就无法读取!

麻烦你再帮帮我,谢谢!
4 发表于 2006-09-16 04:02 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
20年会员
UID 42173
性别 男
状态 离线
哪就两个%%

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
5 发表于 2006-09-16 04:05 ·  中国 黑龙江 齐齐哈尔 中移铁通
初级用户
积分 30
发帖 11
注册 2006-06-11 17:19
20年会员
UID 56883
状态 离线
那个1%,是控制打开函数的,要是没有1%,只是打开一个空的记事本,有了1%,就可以加载文件里面的内容。
在命令提示符下,可以加1%变量,在BAT里就无法加1%的变量。
BAT里C:\WINDOWS\system32\notepad.exe %1的定义为C:\WINDOWS\system32\notepad.exe 后面的%1无法加载。
附件
Image00000.jpg
6 发表于 2006-09-16 04:06 ·  中国 黑龙江 齐齐哈尔 中移铁通
初级用户
积分 30
发帖 11
注册 2006-06-11 17:19
20年会员
UID 56883
状态 离线
OK 谢谢了,两个%%号就可以了!!!

哈哈,谢谢你! 我是菜鸟,长知识了!
7 发表于 2006-09-16 04:12 ·  中国 黑龙江 齐齐哈尔 中移铁通
初级用户
积分 30
发帖 11
注册 2006-06-11 17:19
20年会员
UID 56883
状态 离线
还有个问题,想问一下,系统盘的Windows或WIN可以用%SystemRoot%来定义

那么系统的Program Files 用什么定义呢! 谢谢了!
8 发表于 2006-09-16 04:52 ·  中国 黑龙江 齐齐哈尔 中移铁通
初级用户
积分 30
发帖 11
注册 2006-06-11 17:19
20年会员
UID 56883
状态 离线
好了 找到了 谢谢!
9 发表于 2006-09-16 08:52 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
20年会员
UID 42173
性别 男
状态 离线
回复7楼:

自己运行 set 看看吧

得到答案:

%ProgramFiles%

就可以了

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
论坛跳转: