使用批处理文件循环遍历列表

Tho*_*m G 3 windows ftp cmd batch-file

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

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

我目前有:

open IP
user
pass
quote site reboot
quote site reboot
quit
echo
Run Code Online (Sandbox Code Playgroud)

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

@echo off
set user = Username
set pass = Password
ftp -s:ftp.txt
Run Code Online (Sandbox Code Playgroud)

我想要一份所使用的 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
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!

Cri*_*ati 5

我就是这样做的。
修改您的脚本(script00.bat):

@echo off

for /F %%f in (cameras.txt) do (
    ftp -s:ftp.txt %%f
)
Run Code Online (Sandbox Code Playgroud)

注意事项

  1. 我删除了 2 个env var ( user / pass ) 设置,因为它们无论如何都没有被使用

  2. [SS64]:FOR /F用于迭代cameras.txt文件的每一行

  3. 注意FTP的额外参数(它是IP

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

  5. 由于第三注释,IP作为参数传递给FTP ,因此ftp.txt文件中不再需要它,因此您应该删除第一( open IP)

发布其他文件内容。

相机.txt

mirrors.kernel.org
ftp.kr.freebsd.org
Run Code Online (Sandbox Code Playgroud)

ftp.txt

anonymous
pass
quote site reboot
quote site reboot
quit
echo
Run Code Online (Sandbox Code Playgroud)

输出

mirrors.kernel.org
ftp.kr.freebsd.org
Run Code Online (Sandbox Code Playgroud)

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

有关FTP命令的更多详细信息,请查看:[MS.Learn]: ftp