【问题标题】:Loop through a list using a batch file使用批处理文件循环列表
【发布时间】:2017-07-26 13:02:53
【问题描述】:

我正在尝试编写一个批处理文件来自动重启我在服务器上的一些 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

任何帮助将不胜感激!

【问题讨论】:

  • 您是否有不同的摄像头设置(例如用户),或者只是 IP 不同?
  • 只有 IP 地址
  • “一些 IP 摄像机”。是3还是300? IP 会嵌入到您的 bat 文件中还是文本文件中?
  • 我想要有关如何操作的信息。我想我会把我的列表放在一个 txt 文件中,然后 bat 文件使用它?

标签: windows batch-file cmd ftp


【解决方案1】:

我会这样做:

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

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

    @echo off
    
    for /F %%f in (cameras.txt) do (
        ftp -s:ftp.txt %%f
    )
    
    • 注意事项:
      1. 我删除了 2 个环境变量(userpass)设置,因为它们没有被使用
      2. [SS64]: FOR /F 用于遍历 cameras.txt 文件的每一行
      3. 注意 ftp 的额外参数(它是 IP
  • 由于第 3rd 注释,IP 作为参数传递给 ftp,因此在 ftp.txt 文件,因此您应该删除第 1st 行 (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.

我认为这就是你所追求的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-21
    • 2023-03-23
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    相关资源
    最近更新 更多