使用批处理文件循环列表

时间:2017-07-26 13:02:54

标签: windows batch-file cmd ftp

我正在尝试编写一个批处理文件来自动重启我在服务器上的一些IP摄像机。

我已成功获得一个批处理文件,通过ftp重新启动一个摄像头,但我无法理解如何为该范围内的每个ip执行此操作。

我目前有:

open IP
user
pass
quote site reboot
quote site reboot
quit
echo

保存在.txt文件(ftp.txt)中,我使用.bat文件调用它:

@echo off
set user = Username
set pass = Password
ftp -s:ftp.txt

我想要一个使用的ip地址列表,然后让bat脚本逐个执行重启,并等待2分钟再转移到下一个。

我想我需要将列表放在.txt文件中,在bat中使用for循环。

类似

set ip = iplist(??)  <-- Part causing confusion
for each ip in ftp.txt
  open ip
  user
  pass
  quote site reboot
  quote site reboot
  pause 2 min
quit

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

以下是我的表现:

  • 将所有相机 IP 存储在名为 cameras.txt 的文件中(一个 IP 每行)

  • 将批处理文件( script.bat )修改为:

    @echo off
    
    for /F %%f in (cameras.txt) do (
        ftp -s:ftp.txt %%f
    )
    
    • 注意:
      1. 我删除了2个env变种(用户传递)设置,因为它们没有被使用
      2. [SS64]: FOR /F用于遍历 cameras.txt 文件的每一行
      3. 请注意 ftp 的额外参数(它是 IP
  • 由于3 rd 注释, IP 作为参数传递给 ftp ,因此不再需要它在 ftp.txt 文件中,您应该删除1 st 行(open IP

发布其他文件内容。

cameras.txt

mirrors.kernel.org
ftp.kr.freebsd.org

ftp.txt

anonymous
pass
quote site reboot
quote site reboot
quit
echo

<强>输出

e:\Work\Dev\StackOverflow\q045327836>script.bat
Connected to mirrors.pdx.kernel.org.
220 Welcome to mirrors.kernel.org.
200 Always in UTF8 mode.
User (mirrors.pdx.kernel.org:(none)):
331 Please specify the password.

230 Login successful.
ftp> quote site reboot
550 Permission denied.
ftp> quote site reboot
550 Permission denied.
ftp> quit
221 Goodbye.
Connected to daemon.kr.freebsd.org.
220 daemon.kr.freebsd.org FTP server (Version 6.00LS) ready.
500 OPTS UTF8 ON: command not understood.
User (daemon.kr.freebsd.org:(none)):
331 Guest login ok, send your email address as password.

230 Guest login ok, access restrictions apply.
ftp> quote site reboot
500 SITE REBOOT: command not understood.
ftp> quote site reboot
500 SITE REBOOT: command not understood.
ftp> quit
221 Goodbye.

我认为这是你追求的目标。