2016-11-18 15 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のコピーを保管することができます。
コマンドラインでftpにIPアドレスを指定する代わりに、ftpcmd.datにIPアドレスを入力することもできます。
このスクリプトを実行するときは、ftpcmd.datが存在しない場合にのみ作成してください。それ以外の場合は、前回から回答が保存されているコピーを使用してください。
以下の例では、私が見つけたリダイレクトを読みやすくした後にエコーを入れるように少し並べ替えました。そして、 "echo"を "echo"に置き換えました。あなたがここで見上げることができる秘訣のために。

@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を削除しないことです。

もう一つの方法は、あなたが手動ftpcmd.datを削除すると、コードが:autoにスキップしますとftpcmd.datに保持以前の値はなりませんならば、現在のデータ入力は、必要になります

if exist ftpcmd.dat goto auto 

を使用することです中古。

関連する問題