在Windows批处理中读取属性文件,并重复键的值

时间:2013-08-27 17:37:15

标签: windows batch-file readfile

我首次尝试使用Windows批处理自动创建一些目录。

我的文件看起来像这样:

app=application
proj=project
file=file1.txt
file2.txt
file3.txt
app=application2
proj=project2
file=file1.txt
file2.txt
file3.txt

我想阅读该文件,以便对于每个应用和项目组合,我想创建一些目录并复制文件。

这样我最终会有这样的事情:

  • C:\应用\项目\ FILE1.TXT
  • C:\应用\项目\ FILE2.TXT
  • C:\应用\项目\ file3.txt
  • C:\应用2 \项目\ FILE1.TXT
  • C:\应用2 \项目\ FILE2.TXT
  • C:\应用2 \项目\ file3.txt 等等..

如果我能以某种方式以正确的顺序读取属性文件的内容,我想我可以弄清楚如何创建目录。

我试过这个,但我没有得到预期的结果:

@echo off
For /F "tokens=1,* delims== " %%A IN (tempForBatch.txt) DO (
IF "%%A"=="app"  set app=%%B
    echo "App is %app%"

IF "%%A"=="proj" set proj=%%B
    echo "Proj is %proj%"


IF "%%A"=="file"  set file=%%B
echo "File is %file%"
)

但我得到了这个:     “应用是应用”     “Proj是项目”     “文件是file1.txt”     “应用是应用”     “Proj是项目”     “文件是file1.txt”     “应用是应用”     “Proj是项目”     “文件是file1.txt”     “应用是应用”     “Proj是项目”     “文件是file1.txt”     “应用是应用”     “Proj是项目”     “文件是file1.txt”

知道如何实现这个目标吗?

感谢您提前抽出时间。

1 个答案:

答案 0 :(得分:2)

@ECHO OFF &SETLOCAL
FOR /f "tokens=1*delims==" %%a IN (tempForBatch.txt) DO (
    IF /i "%%a"=="app" (
        SET "app=%%b"
    ) ELSE (
        IF /i "%%a"=="proj" (
            SET "proj=%%b"
        ) ELSE (
            IF /i "%%a"=="file" (
                SET "file=%%b"
            ) ELSE (
                SET "file=%%a"
            )
            SETLOCAL ENABLEDELAYEDEXPANSION
            ECHO "\!app!\!proj!\!file!"
            ENDLOCAL
        )
    )
)

"\application\project\file1.txt"
"\application\project\file2.txt"
"\application\project\file3.txt"
"\application2\project2\file1.txt"
"\application2\project2\file2.txt"
"\application2\project2\file3.txt"