Board logo

标题: [已解决]如何做个能接收外部指令的批处理。 [打印本页]

作者: www0com0my     时间: 2009-9-20 10:15    标题: [已解决]如何做个能接收外部指令的批处理。

小弟需要做一个可以接受外部的批处。

例如 test.bat 执行参数1111
test.bat 1111

然后他能把1111的参数转换为 %xx%
这样那个参数用在很多方面。


小弟现在做一个批处

@echo off
title test
set DT="C:\Program Files\D-Tools\daemon.exe"
%DT% -mount 0,"123.iso"


小弟希望通过批处的外部指令 插入不同的iso档。
当打入 test.bat 222.iso 之后会插入222.iso

请问这样要如何实现?

[ Last edited by www0com0my on 2009-9-21 at 09:10 ]
作者: q8249014     时间: 2009-9-20 10:24
没看明白意识 能说清楚点嘛
作者: Hanyeguxing     时间: 2009-9-20 10:38

@echo off
if "%1" == "" echo 错误:请指定.iso文件&pause&exit
if not exist "%1" echo 错误:%1文件不存在&pause&exit
"C:\Program Files\D-Tools\daemon.exe" -mount 0,"%1"
[ Last edited by Hanyeguxing on 2009-9-20 at 11:22 ]
作者: ficn     时间: 2009-9-21 02:58
@echo off
title test
set DT="C:\Program Files\D-Tools\daemon.exe"
%DT% -mount 0,"%1"<这里改 %1
作者: www0com0my     时间: 2009-9-21 09:05
谢谢各位大大,

to:
q8249014
不好意思,小弟滴表达能力太差。就是要方便放其他程式调用的工具。

to:ficn & Hanyeguxing
谢谢ficn
谢谢Hanyeguxing

看了2位大大的批处理后有个小小的疑问,请教。


当用参数的时候 为什么我们不需要先用set a=%1 来设定,就能直接用-mount 0,"%1" 呢?

如果我们要用2个参数的话 例如 111.bat xxx iso


要让批处理可以接受这样的用法行吗?
set DT="C:\Program Files\D-Tools\daemon.exe"
%DT% -mount 0,%1.%2

因为我们不一定是要导入iso 可能是nrg 或mdf 档。


另外谢谢Hanyeguxing
您的批处理让小弟学会了还能用if "%1" == "" echo XXXX 来显示未键入参数的信息,以往小弟的批处理如果没指定参数if 之后都是goto exit的,实在让小弟受益不少。

这是后来小弟制作的批处理。不知有什么能够改进的部分?
@echo off
title D-Tools
set DT="C:\Program Files\D-Tools\daemon.exe"
set a=%1
%DT% -mount 0,"%cd%\%1"
exit
[ Last edited by www0com0my on 2009-9-21 at 09:08 ]
作者: Hanyeguxing     时间: 2009-9-21 10:27
如果我们要用2个参数的话 例如 111.bat xxx iso
要让批处理可以接受这样的用法行吗?
set DT="C:\Program Files\D-Tools\daemon.exe"
%DT% -mount 0,%1.%2
因为我们不一定是要导入iso 可能是nrg 或mdf 档。


完全可以。



还有,我看不出set a=%1存在的意义

参数本身可以在批处理的任何地方使用,参数与变量最大的区别在于,参数不能被替换、搜索,检查字符串。如果需要这样做,需要将参数赋值给变量。

[ Last edited by Hanyeguxing on 2009-9-21 at 10:33 ]
作者: www0com0my     时间: 2009-9-30 01:05
恩,谢谢大大。
小弟明白了,了解这个方式对于小弟将来写批处理提供了很大的灵活性,受益无穷。
感谢啊。