从ini文件中批量获取未知数量的变量进行复制

时间:2019-02-27 02:55:47

标签: batch-file cmd

我有3个文件:

  1. 文本文件
  2. ini文件
  3. 批处理文件

这是ini文件:

[ABC]
COPYALL=YES
FILEFILTER1=ABS
FILEFILTER2=DEF
FILEFILTER3=SEFS
FILEFILTER4=CXC
FILEFILTER5=VFV
FILEFILTER6=WRE
FOLDERNAME1=123
FOLDERNAME2=321

[PDF]
COPYALL=NO
FILEFILTER1=GRE
FILEFILTER2=GA
FILEFILTER3=GC
FILEFILTER4=VF
FILEFILTER5=BFA
FILEFILTER6=FEW
FILEFILTER7=QWE
FOLDERNAME1=WDQ
FOLDERNAME2=ZXC

文本文件包含:

ID=ABC

因此批处理文件将知道需要在.ini文件中查找哪个部分:

@ECHO OFF
SETLOCAL
SET INIFile="configproto - Copy (2).ini"
SET "FLAG="

for /f "tokens=1*delims=:" %%G in ('findstr /n "^" POS_User.txt') do if %%G equ 2 (
    echo %%H
    set "posuser=%%H"
)
set posuser=%posuser:~13%
echo This is company ID %posuser%

:_AFTER
for /f "usebackq tokens=1,*eol=|delims==" %%a in (%INIFile%) do (
    IF "%%b"=="" (
        REM No "=" so section
        IF /i "%%a"=="[%posuser%]" (SET flag=Y) ELSE (SET "flag=")
    ) ELSE IF defined flag (
        REM data line - only if FLAG is defined
        REM set values defined
        SET "%%a=%%b"
        REM pick particular values
        if /i "%%a"=="COPYALL" set "COPYALL=%%b"
        if /i "%%a"=="FILEFILTER1" set "FILEFILTER1=%%b"
        if /i "%%a"=="FILEFILTER2" set "FILEFILTER2=%%b"
        if /i "%%a"=="FILEFILTER3" set "FILEFILTER3=%%b"
        if /i "%%a"=="FILEFILTER4" set "FILEFILTER4=%%b"
        if /i "%%a"=="FILEFILTER5" set "FILEFILTER5=%%b"
        if /i "%%a"=="FILEFILTER6" set "FILEFILTER6=%%b"
    )
)

echo %posuser%
goto :_COPYALL

::COPY ALL FOLDERS AND FILES EXCLUDE CERTAIN FILES

:_COPYALL
echo %FILEFILTER1%>test.txt
echo %FILEFILTER2%>>test.txt
echo %FILEFILTER3%>>test.txt
echo %FILEFILTER4%>>test.txt
echo %FILEFILTER5%>>test.txt
echo %FILEFILTER6%>>test.txt
if "%COPYALL%" EQU "YES" (
    if not exist C:\Users\GINNY\Desktop\experimentfolder\pic (
        mkdir C:\Users\GINNY\Desktop\experimentfolder\pic
    )
    del C:\Users\GINNY\Desktop\experimentfolder\pic\*.* /Q /F
    xcopy C:\Users\GINNY\Desktop\AllOutlets C:\Users\GINNY\Desktop\experimentfolder /exclude:test.txt /Y /S
    del C:\Users\GINNY\Desktop\AllOutlets /Q /F
    del test.txt /Q /F
) else ( 
    echo NO COPY ALL
)
exit /b

如您所见,当前代码只能使用6个过滤器。但是,如果另一个部分有7个过滤器,它将不会排在第7位。如何编写代码以使批处理文件获得X个过滤器,以便用户可以过滤所需的文件数量? 如果有帮助,请使用Windows 7。

0 个答案:

没有答案