2016-11-18 38 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以前的值会用过的。

相关问题