我想存储用户输入以用于将来的更新

时间:2016-11-18 20:06:49

标签: batch-file ftp

我已经将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

2 个答案:

答案 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中保留的先前值。