2013-04-25 194 views
1

我需要传递命令参数与批处理文件。我会怎么做?我有一个小程序设置,但我不知道如何获得命令参数..或者真的如何做一个命令。传递命令参数批量

@echo OFF 
title Name pl0x 
color 0a 
:start 
set INPUT= 
set /P INPUT= %=% 
IF "%INPUT%"=="/mynameis" (
goto :init 
) ELSE (
goto :start 
) 
:init 
Pause&Exit 
REM Here, I'd print the name, like this: echo.Hello, %name% 
REM I just don't have the variable. And I don't know how to set it. 
+0

如果我解决了这个或你的最后一个问题记得用接受按钮来接受我的答案,谢谢。 – ElektroStudios 2013-04-25 21:59:10

回答

1

一种说法是由一个空间分隔的字至极,你可以使用就像应用程序中的参数一样。

那么,如果这样调用脚本:

Script.Bat word1 word2 word3_word4-word5 

的参数是:

Argument 1 = "word1" 
Argument 2 = "word2" 
Argument 3 = "word3_word4-word5" (Because any space). 

在批处理参数存储在特殊瓦尔从%1%255其中%1等于“参数1”。

%0等于当前脚本名称或过程名称。

%*加入所有次争论

..和特殊改性剂扩大的说法没有双引号。

那么,如果我们有这样的代码:

@Echo OFF 
If /I "%~1" EQU "/Print" (Echo: You called the function "%~1" with the value: "%~2")) 

我们检查,如果参数1是否等于打印交换机,第二个参数的值等于“/打印”,然后。

然后,你可以打电话给你的蝙蝠这样的:

Script.bat /Print Hello! 

了解更多关于批次的参数在这里:http://ss64.com/nt/syntax-args.html

+0

**%0到%9 **是范围 - 它们不会达到%255。您必须使用SHIFT访问第9个参数之后的任何参数。 – foxidrive 2013-04-26 01:32:15

+0

这是打印/使用它们的范围,但我所说的是它们被存储到数字%255(%10-%255是虚构的,隐藏的,但可以像你说的那样移位),你不能存储/使用/移动超过255个参数。 – ElektroStudios 2013-04-26 01:49:06

2

参数与%1%2完成,等

所以,如果你有mynameis.bat%1将包含测试

+0

任何想法如何我可以在命令中使用它?就像我想让用户做/ mynameis名称 – hexagonest 2013-04-25 21:53:41

+0

你是在谈论命名参数?或者myname是程序或批处理文件? – 2013-04-25 21:57:59

+0

命名的论点......我想,是的。因为mynameis不是程序/批处理文件 – hexagonest 2013-04-25 22:00:19