使用For列出所有文件并将其用作变量

时间:2017-07-26 08:55:32

标签: batch-file

现在我的脚本使用此文件设置我需要执行的txt文件的路径。

有没有办法改进脚本,以便它读取服务器文件夹中的所有文件,并在第二个FOR上使用它们而不是%s1%,%s2%等?

脚本

for /F "tokens=*" %%c in (servers\list.txt) do (
    %%c
)
for %%a in (%s1% %s2% %s3%) do (
    call :start %%a
)

文件列表:

set s1=servers\xxx.txt
set s2=servers\yyy.txt
set s3=servers\zzz.txt

Servers文件夹包含list.txt和文件xxx.txt,yyy.txt,zzz.txt等。

xxx.txt,yyy.txt文件具有下一种格式:

set server=192.168.0.0
set user=user
...

2 个答案:

答案 0 :(得分:1)

你需要嵌套你的for循环,而不是一个接一个地执行:

@echo off
setlocal enabledelayedexpansion
for %%l in (list.txt) do (
  for /f "tokens=2 delims==" %%a in (%%l) do (
    for /f "delims=" %%c in (%%a) do %%c
    ECHO !server!,!dbname!,!dbuser!,!dbpass!
  )
)

答案 1 :(得分:1)

@ECHO OFF
SETLOCAL
for /F "tokens=*" %%c in (q45322067.txt) do (
    %%c
)
for /F "tokens=2delims== " %%a in (q45322067.txt) do (
  FOR /f "tokens=1*delims==" %%b IN ('set %%a') DO IF /i "%%b"=="%%a" ECHO call :start %%c
)
ECHO -------------------------------
for /F "tokens=3delims== " %%a in (q45322067.txt) do (
  ECHO call :start %%a
)

GOTO :EOF

我使用了一个名为q45322067.txt的文件,其中包含我的测试数据。

以下是一些方法,具体取决于您是否确实需要加载s?,或者您有理由将s?用作中间变量。