我有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。