쉼표로 구분 된 입력 CSV 파일 ttt.csv가 있으며 각 필드에는 큰 따옴표와 쉼표가 포함될 수 있습니다.
ttt.csv의 내용은 다음과 같습니다.
"CN=Bar\\,Alex,OU=Users,OU=Headquarters,DC=CORP",Bar,Alex,"Barziza,Alex",BARAAA,[email protected]
"CN=Boo\\,Ryan,OU=Users,OU=Headquarters,DC=CORP",Boo,Ryan,"Boo,Ryan",BABBBB,[email protected]
이 파일을 반복해야합니다. 각 줄에 대해 6 개의 값을 각각 가져 와서 데이터베이스에 SQL 삽입 문을 만들어야합니다.
Line 2의 경우 다음을 받아야합니다.
Value1= CN=Bar\\,Alex,OU=Users,OU=Headquarters,DC=CORP
Value2= Boo
Value3= Ryan
Value4= Boo,Ryan
Value5= BABBBB
Value6= [email protected]
큰 따옴표를 포함하는 구분 기호를 사용했는데 작동하지 않는 것 같습니다.
set str2="CN=Bar\\,Alex,OU=Users,OU=Headquarters,DC=CORP",Bar,Alex,"Barziza,Alex",BARAAA,[email protected]
echo %str2%
for /f "tokens=1 delims=(,")" %%a in ("!str2!") do ( set newstr2=%%a )
echo !newstr2!
위에서 언급했듯이 일반 for
루프를 사용하십시오. no /f
, no /r
, no /d
, no /l
, 단순하고 단순한 for
루프입니다. 인용 된 항목을 단일 토큰으로 처리하는 동안 CSV 구분 기호를 처리합니다.
@echo off
setlocal enabledelayedexpansion
set str2="CN=Bar\\,Alex,OU=Users,OU=Headquarters,DC=CORP",Bar,Alex,"Barziza,Alex",BARAAA,[email protected]
echo %str2%
set idx=0
for %%a in (%str2%) do (
set "newstr[!idx!]=%%~a"
set /a idx += 1
)
set newstr
산출:
C : \ Users \ me \ Desktop> test.bat "CN = Bar \\, Alex, OU = Users, OU = Headquarters, DC = CORP", Bar, Alex, "Barziza, Alex", BARAAA, aaa @ email. com
newstr [0] = CN = Bar \\, Alex, OU = Users, OU = Headquarters, DC = CORP
newstr [1] = Bar
newstr [2] = Alex
newstr [3] = Barziza, Alex
newstr [4] = BARAAA
newstr [5] [email protected]
csv 데이터에 토큰 구분 기호로 처리되지 않아야하는 인용되지 않은 공백이 포함 된 경우 분할하기 전에 공백을 일시적으로 밑줄로 변환 한 다음 다음과 같이 다시 변환 할 수 있습니다.
@echo off
setlocal enabledelayedexpansion
set str2="CN=Ryan\\,David Paul,OU=Users,OU=Singapore,DC=GLOBAL,DC=CORP",Ryan,David Paul,"Ryan, David Paul",RPAUL123,[email protected]
echo %str2%
set idx=0
for %%a in (%str2: =_%) do (
set "str=%%~a"
set "newstr[!idx!]=!str:_= !"
set /a idx += 1
)
set newstr
원하는 경우 하위 문자열 대체에 대해 자세히 읽을 수 있습니다 . 산출:
C : \ Users \ me \ Desktop> test.bat
"CN = Ryan \\, David Paul, OU = Users, OU = Singapore, DC = GLOBAL, DC = CORP", Ryan, David Paul, "Ryan, David Paul" , RPAUL123, David @ aaad.com
newstr [0] = CN = Ryan \\, David Paul, OU = Users, OU = Singapore, DC = GLOBAL, DC = CORP
newstr [1] = Ryan
newstr [2] = David Paul
newstr [3] = 라이언, 데이비드 폴
newstr [4] = RPAUL123
newstr [5] [email protected]
물론 데이터에 이미 밑줄이 포함되어있는 경우 포함되지 않은 문자 (백틱, 물결표, 달러 기호 등)를 사용하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다