2013-04-25 70 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