2013-02-16 76 views
0

我开发的Windows软件执行它们,有一个功能我需要“System.Shell.execute”一个批处理文件,但我希望它有两个功能(参数)如何给参数,批处理文件.BAT与System.Shell.execute

所以,当我执行:

objShell.ShellExecute("file.bat", "PARAMETER1", "", "open", 2);

将运行ŧ他在PAR文件中为PARAMETER1,副文件为(参数2)。

我想知道我可以配置我文件,要做到这一点,例如:

@ECHO OFF 

PARAMETER1 

::  execute some code here 

PARAMETER2 

::  execute some code here 

(可能类似的东西?)

回答

1

使用每个功能的批量标签。只需简单地按第一批参数指定的标签即可。每个“功能”可以访问从%2开始的其他参数。

@echo off 
goto %1 

:PARAMETER1 
REM execute code here 
exit /b 

:PARAMETER2 
REM execute code here 
exit /b 
+0

太谢谢你了! – tofran 2013-02-16 21:36:27

+0

你能回答编辑问题吗? – tofran 2013-02-17 11:48:27

+2

@tofran - 我不明白你在新的第二个问题中想要做什么。还有,(好吧)第二个问题。请从这个问题中删除编辑,然后问一个新的问题,并提供更多的解释,你正在尝试做什么。 – dbenham 2013-02-17 13:06:31

0

我会做我的剧本有一点不同:

@echo off 
goto %1 
goto :end 

:: functions 

:PARAMETER1 comment1 
REM execute code here 
exit /b 0 

:PARAMETER2 comment2 
REM execute code here 
if %ERRORLEVEL%==1 ECHO goto :error 
exit /b 0 

:error 
ECHO Error occurred with arg %1 
timeout 10 
exit 1 

:: end of script 
:end 
ECHO Finished 
+0

您的'goto:end'是死码,因为如果标签不存在,'goto%1'将导致致命错误。所以这真的和我的答案没有什么不同,只是混淆了一下。在尝试使用GOTO之前有多种方法来验证标签 - 例如,通过IF使用硬编码标签字符串,或FINDSTR使用'%〜f0'。但它并没有真正改变主要概念。 – dbenham 2013-02-16 18:48:03

+0

你能回答编辑问题吗? – tofran 2013-02-17 11:48:49

+0

你的“set”命令是错误的。此外,您已将此问题标记为已回答。 – djangofan 2013-02-17 19:55:00