2016-11-18 34 views
0

我已經創建了一個批處理文件到FTP文件到我們的系統並恢復到特定的庫中。這很好,但它需要我想減少的用戶輸入。如果我可以存儲答案或找回答案,它可以緩解這個問題。有沒有辦法做到這一點,以及如何?我想存儲用戶輸入以用於將來的更新

fileup.bat

@echo off 

SET /P name= Please enter in user name: 
SET /P userpw= Please enter in user password: 
SET /P IPaddr= Please enter in IP address of the AS400: 
SET /P TRQ= Please enter in TRQ number: 

echo user>> ftpcmd.dat 
echo %name%>> ftpcmd.dat 
echo %userpw%>> ftpcmd.dat 
echo bin>> ftpcmd.dat 
echo lcd c:\ahc>> ftpcmd.dat 
echo cd /qsys.lib/ahcpgm.lib>> ftpcmd.dat 
echo put PCDIS%TRQ%.savf>> ftpcmd.dat 
echo quote rcmd RSTLIB SAVLIB(PCDIS%TRQ%) DEV(*SAVF) SAVF(AHCPGM/PCDIS%TRQ%)>> ftpcmd.dat 
echo quote rcmd RSTLIB SAVLIB(PCDIS%TRQ%) DEV(*SAVF) SAVF(AHCPGM/PCDIS%TRQ%) MBROPT(*ALL) ALWOBJDIF(*ALL) RTSLIB(AHCPGM)>> ftpcmd.dat 
echo quit>> ftpcmd.dat 

ftp -n -s:ftpcmd.dat %IPaddr% 


del ftpcmd.dat 
+0

爲什麼不直接在批處理文件中硬編碼呢? – Squashman

+1

或者只是不要刪除ftpcmd.dat – SomethingDark

回答

0

這種方法需要一次適當的值已經進入了第一次在隨後的運行中沒有用戶輸入。
正如SomethingDark建議的那樣,您可以保留寫入其中的答案的ftpcmd.dat副本。
您也可以將IP地址放入ftpcmd.dat中,而不是在命令行中將其提供給ftp
當您運行此腳本時,只有在ftpcmd.dat不存在的情況下才能生成。否則,只需使用上次存儲在其中的答案的副本。
在下面的例子中,我還重新安排了一點,在重定向之後放置回聲,我發現它使得它更易於閱讀,並用「回聲」替換了「回聲」。出於神祕的原因,你可以在這裏看到SO。

@echo off 
if EXIST ftpcmd.dat goto :justRunIt 

SET /P name= Please enter in user name: 
SET /P userpw= Please enter in user password: 
SET /P IPaddr= Please enter in IP address of the AS400: 
SET /P TRQ= Please enter in TRQ number: 

>ftpcmd.dat echo.open %IPaddr% 
>>ftpcmd.dat echo.user 
>>ftpcmd.dat echo.%name% 
>>ftpcmd.dat echo.%userpw% 
>>ftpcmd.dat echo.bin 
>>ftpcmd.dat echo.lcd c:\ahc 
>>ftpcmd.dat echo.cd /qsys.lib/ahcpgm.lib 
>>ftpcmd.dat echo.put PCDIS%TRQ%.savf 
>>ftpcmd.dat echo.quote rcmd RSTLIB SAVLIB(PCDIS%TRQ%) DEV(*SAVF) SAVF(AHCPGM/PCDIS%TRQ%) 
>>ftpcmd.dat echo.quote rcmd RSTLIB SAVLIB(PCDIS%TRQ%) DEV(*SAVF) SAVF(AHCPGM/PCDIS%TRQ%) MBROPT(*ALL) ALWOBJDIF(*ALL) RTSLIB(AHCPGM) 
>>ftpcmd.dat echo.quit 

:justRunIt 
ftp -n -s:ftpcmd.dat 

如果你真的想走極端,你可以檢查ftp命令的ERRORLEVEL,看它是否成功與否,並假設如果失敗是由於惡劣的用戶輸入。如果看起來像(例如)輸入了錯誤的用戶名,則可以刪除ftpcmd.dat,以便在下次運行時提示用戶輸入。

0
@echo off 

if "%~1"=="" goto auto 
del ftpcmd.dat 2>nul 

SET /P name= Please enter in user name: 
SET /P userpw= Please enter in user password: 
SET /P IPaddr= Please enter in IP address of the AS400: 
SET /P TRQ= Please enter in TRQ number: 

echo user>> ftpcmd.dat 
echo %name%>> ftpcmd.dat 
echo %userpw%>> ftpcmd.dat 
echo bin>> ftpcmd.dat 
echo lcd c:\ahc>> ftpcmd.dat 
echo cd /qsys.lib/ahcpgm.lib>> ftpcmd.dat 
echo put PCDIS%TRQ%.savf>> ftpcmd.dat 
echo quote rcmd RSTLIB SAVLIB(PCDIS%TRQ%) DEV(*SAVF) SAVF(AHCPGM/PCDIS%TRQ%)>> ftpcmd.dat 
echo quote rcmd RSTLIB SAVLIB(PCDIS%TRQ%) DEV(*SAVF) SAVF(AHCPGM/PCDIS%TRQ%) MBROPT(*ALL) ALWOBJDIF(*ALL) RTSLIB(AHCPGM)>> ftpcmd.dat 
echo quit>> ftpcmd.dat 

:auto  
ftp -n -s:ftpcmd.dat %IPaddr% 

只需運行fileup會去標籤:auto以來的第一個參數是空的。之前的ftpcmd.dat將被使用。

運行fileup x(其中x可以幾乎任何東西 - 它valua實際上沒什麼用)將跳過goto,刪除ftpcmd.dat和作爲當前系統不工作。

關鍵是不要刪除文件ftpcmd.dat

另一種方法是使用

if exist ftpcmd.dat goto auto 

如果手動刪除ftpcmd.dat則當前數據輸入將被要求,如果沒有,那麼代碼將跳到:auto並保留在ftpcmd.dat以前的值會用過的。

相關問題