2012-07-13 58 views
1

我有兩個腳本。第一個腳本要求用戶輸入一些內容,並調用另一個腳本,將其輸入作爲參數。第二個腳本再次要求用戶輸入相同的內容。編程設定/ p輸入

first.bat

set /p input=Insert your input: 
call second.bat %input% 

second.bat

if %1 == "Y" input=%1 & goto skipInput 
set /p input=Insert the same input: 

:skipInput 
echo Skipped user input 

是否有可能設定第一輸入值的第二用戶輸入而無需用戶按壓相同的輸入值?問題是set /psecond.bat不能像上面的例子中跳過。

更新的解決方案:

first.bat

set /p input=Insert your input: 
echo %input% | (cd path/to/file & second.bat) 
echo %input% | (cd path/to/file & second.bat) 
pause >nul 

回答

2

我不是100%肯定你正在嘗試做的,但也許這

First.bat

set /p input=Insert your input: 
call second.bat %input% 

Second.bat

if %1=="Y" set input=%1 

這將在第二個腳本設置變量input到的input在第一腳本中的值。

更新

如果你只有進入首批調用別人那就試試這個

@echo off 
set /p input=Insert your input: 
echo %input%| second.bat 
pause >nul 

運行,我設法在第二批的提示之後,只需要使用管道重定向填入set /p行。

+0

的問題是,'設置* second.bat/p' *是要求用戶輸入。在我的情況下,* first.bat *正在調用很多.bat文件,這些文件要求用戶使用同一個用戶。所以用戶必須多次插入相同的輸入。 'set/p'必須留在* second.bat *中,但我想禁用它,所以它不會等待用戶輸入,但會自動從* first.bat *中插入值。 – murko 2012-07-13 08:39:25

+0

'set/p必須留在second.bat中,但我想禁用它,所以它不會等待用戶輸入,但會自動從first.bat中插入值。如果要禁用提示,那麼爲什麼還要有'set/p'?這聽起來很矛盾。 – 2012-07-13 08:58:48

+0

我同意。如果可以按照我的方式完成,我不會在* second.bat中使用'set/p' *,但事實並非如此。 – murko 2012-07-13 09:04:10

0
:first.bat 
cls 
set /p input=Enter input. 
if "%input%" equ "" goto first.bat 
call seccond.bat %input% 

這裏發生的是,如果用戶的輸入等於「NUL」,則返回到開頭。

:seccond.bat 
cls 
set input=%* 
if /i "%input%" equ "Y" do command 

把你的代碼下面SECCOND.bat