我已经将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 :(得分:0)
一旦第一次输入适当的值,此方法在后续运行时不需要用户输入。
正如SomethingDark建议的那样,你可以保留你写的答案的ftpcmd.dat副本。
你也可以将IP地址放入ftpcmd.dat而不是提供给{{1}在命令行上
运行此脚本时,如果它尚未存在,则仅生成ftpcmd.dat。否则,只需使用上次存储了答案的副本
在下面的示例中,我还重新排列了一下,以便在重定向之后放置回声,我发现它更容易阅读,我更换了#34; echo"用" echo。"出于神秘的原因,你可以在SO上查看。
ftp
如果你真的想要过火,你可以检查@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
命令的ERRORLEVEL以查看它是否成功,并假设如果失败则是由于用户输入错误。如果看起来(例如)输入了错误的用户名,则可以删除ftpcmd.dat,以便在下次运行时提示用户输入。
答案 1 :(得分: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
中保留的先前值。