每10秒使用FTP获取文本文件

时间:2016-04-20 08:58:17

标签: batch-file cmd ftp

我正在寻找可以使用FTP获取文本文件的批处理文件,并且可以延迟10秒运行。

这是我的代码:

CREATE TABLE technical (
    id INT NOT NULL AUTO_INCREMENT,
    name varchar(255),
    PRIMARY KEY (id)
) ENGINE=INNODB;

CREATE TABLE problem (
    id INT, 
    name varchar(255),
    technical_id_in INT,
    technical_id_waiting INT,
    technical_id_out INT,
    INDEX (technical_id_in,technical_id_waiting,technical_id_out),
    FOREIGN KEY (technical_id_in) REFERENCES technical(id) ON UPDATE CASCADE ON DELETE CASCADE,
    FOREIGN KEY (technical_id_waiting) REFERENCES technical(id) ON UPDATE CASCADE ON DELETE CASCADE,
    FOREIGN KEY (technical_id_out) REFERENCES technical(id) ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=INNODB;

INSERT INTO `technical` (`id`, `name`) VALUES ('1', 'victor'), ('2', 'eduardo'), ('3', 'jose');

INSERT INTO `problem` (`id`, `name`, `technical_id_in`, `technical_id_waiting`, `technical_id_out`) VALUES ('1', 'Problem 1', '1', '2', '1'), ('2', 'Problem 2', '1', '1', '1');

我一直收到错误

:loop

ftp -i -s:"%~f0"&GOTO:EOF
open Server_IPADDRESS
userName
Password
get test.txt
close

TIMEOUT 10
goto loop

我想要的是退出ftp> TIMEOUT 10 Invalid command. ftp> goto loop Invalid command. 并恢复正常ftp,但我无法让它发挥作用。

1 个答案:

答案 0 :(得分:2)

确保您了解-s:"%~f0"的作用。

它告诉ftp.exe自己运行批处理文件,就好像它是FTP脚本一样。

ftp.exe运行批处理文件时,它:

  • :loopftp.exe行提供了两个“无效命令”错误。
  • 运行实际的FTP脚本
  • TIMEOUT 10goto loop命令提供了两个“无效命令”错误。

另一方面,批处理文件解释器(cmd.exe)看到GOTO:EOF,它有效地告诉它停止解释批处理文件。因此,TIMEOUT 10goto loop永远不会被执行。

你需要:

  • GOTO:EOF更改为在TIMEOUT 10命令之前跳转;
  • 告诉ftp.execlose使用bye命令后停止,以免您使用后一组“无效命令”错误。
:loop

ftp -i -s:"%~f0"&GOTO:afterftp
open Server_IPADDRESS
userName
Password
get test.txt
close
bye

:afterftp
TIMEOUT 10
goto loop

虽然更强大的方法是分离FTP脚本和批处理文件:

FTP脚本(ftp.txt):

open Server_IPADDRESS
userName
Password
get test.txt
close

批处理文件:

:loop

ftp -i -s:ftp.txt

TIMEOUT 10
goto loop

或者使用临时文件作为FTP脚本:

:loop

echo open Server_IPADDRESS> ftp.txt
echo userName>> ftp.txt
echo Password>> ftp.txt
echo get test.txt>> ftp.txt
echo close>> ftp.txt

ftp -i -s:ftp.txt

del ftp.txt

TIMEOUT 10
goto loop

(实际上,无需在每个循环中重新创建ftp.txt