2012-12-04 297 views
0

尊敬的StackOverFlow會員,從另一個批處理文件更新批處理文件

請幫助我處理這個批處理文件。我想使用從「SET/P INPUT =%=%」給出的答案,並讓它永久更新另一個批處理文件。

這是一個運行於用戶

@echo off 
cls 
echo. 
echo ................................................................. 
echo ..... Specify what the name of the Store is, this will send ..... 
echo ............... alerts to [email protected] .............. 
echo ................................................................. 
echo. 
pause 
:option 
cls 
color 5E 
echo. 
echo "............ Press 1 to specify what the store name is......" 
echo "............ Press 2 to exit the program ................." 
echo. 
SET /P M=Type from the menu above 1 or 2 then press ENTER: 
IF %M%==1 GOTO SEND           
IF %M%==2 GOTO EOF 

:SEND 
cls 
color 0A 
set INPUT= 
set /P INPUT=Enter Store Name: %=%        
if "%INPUT%"=="" goto input 
echo "You said that the store name is: %INPUT%" 

:: Have the user confirm his/her choice 
SET /P ANSWER=Is the name correct (Y/N)?  
echo You chose: %ANSWER%          
if /i {%ANSWER%}=={y} (goto :yes)        
if /i {%ANSWER%}=={yes} (goto :yes)       
goto :no 
:yes 
echo You pressed YES!... The name is updating  
goto name 
:no 
echo You pressed NO!... The program will exit 
pause 
cls 
goto eof 
:name 
::set /A store=%INPUT% 
echo %INPUT% >> notify_support.bat 
::Terminate the program 
:EOF 

得到答案正如你可以看到我很努力指定我應該「回聲%的輸入%>> notify_support.bat」第一批文件。這是第二個批處理文件

@echo off 
call senditquiet -s smtp.gmail.com -port 587 -u [email protected] -protocol ssl -p access -f [email protected] -t [email protected] -subject "Store ABC" -body "Hello there, There is an issue logged at the store.<br>Best regards." 

當第一個批處理文件運行時,它會更新第二個採取了代碼,但只是轉儲它在文件的結尾。

我需要INPUT ECHOed來替換第二個批處理文件中的「Store ABC」。

請協助,我很生疏的批處理文件。

回答

3
echo %INPUT% >> notify_support.bat 

該行包含>>這意味着'轉儲到文件末尾'。您可以使用一個>來覆蓋現有的文件內容。這樣,你可以重新生成整個文件(反正只有2行)。

不同的解決方案是實際解析exising文件並替換該文本。你可以使用for /F ...來做到這一點,它允許你遍歷文件的行。然後,您可以根據現有文件的(已更改)內容生成新文件。缺點是這種文件解析方法特別適用於每行與字段和分隔符(如CSV文件)具有相同格式的數據文件。它不太適合解析「複雜」文件,如批處理文件或程序源文件。

+0

嗨@GolezTrol,我應該然後使第二個批處理文件爲空,並有第一個批處理文件解析它。就好像第一個文件正在爲我寫第二個文件,使用>解決方案? –

+0

如果您選擇實際解析批處理文件,則必須生成第二個文件,之後將重命名該文件,否則此時您正在覆蓋正在閱讀的文件。 (不確定,順便說一下,也許文件在運行'for/F'時立即被讀取)。無論如何,它很難實現,依賴於第二個文件的存在*和*依賴於'存儲ABC標記,這意味着您不能重複該過程。 – GolezTrol

+0

所以我建議不要解析它。你可以覆蓋它。但爲了做到這一點,第一批文件必須確切地知道進入第二個文件的內容。這樣做的好處是實現起來更容易,甚至可以第一次生成第二個文件;它不一定存在。第一個文件需要包含第二個批處理文件的'模板'可能是一個缺點,但是由您決定是否可以接受。 – GolezTrol

相關問題