18フィールドのcsvファイルがあります。データを操作するためのバッチファイルを作成しました。「DEVILSDUE / 1FIRST COMICS、LLC」パブリッシャーからコンマを削除することを除いて、すべてが機能します。そのフィールドは正しく解析されません。例として他のバッチファイルを調べてみましたが、snytaxに慣れていません。
@echo off & Setlocal EnableDelayedExpansion
( FOR /f "tokens=1-18 delims=," %%A in ('More +4 datatest.csv') do (
rem H is the department code
rem S is the sales tax code
rem Q is the publisher code
Set "H=%%H"
Set "S=T"
Set "Q=%%Q"
if "%%Q"=="BOOM! STUDIOS" Set "Q=BOOM STUDIOS"
if "%%Q"=="DEVILS DUE /1FIRST COMICS, LLC" Set "Q=DEVILS DUE"
if "%%H"=="1" Set "H=1005"
if "%%H"=="1" Set "S=N"
if "%%H"=="2" Set "H=1009"
if "%%H"=="2" Set "S=N"
if "%%H"=="3" Set "H=1008"
if "%%H"=="4" Set "H=1002"
if "%%H"=="5" Set "H=1006"
if "%%H"=="6" Set "H=1003"
if "%%H"=="7" Set "H=1011"
if "%%H"=="8" Set "H=1011"
if "%%H"=="9" Set "H=1004"
if "%%H"=="10" Set "H=1016"
if "%%H"=="11" Set "H=1015"
if "%%H"=="12" Set "H=1015"
if "%%H"=="13" Set "H=1011"
if "%%H"=="14" Set "H=1009"
if "%%H"=="14" Set "S=N"
if "%%H"=="15" Set "H=1013"
if "%%H"=="16" Set "H=1017"
echo "",%%~M,%%~N,%%~L,"","","","","",!H!,"","",ITEM,"","",%%~D,%%Q,"","",%%E,"",%%E,"","","","","","","","","","","","","","",%%A,"","","","","",!S!,N,"","",DIAMOND,%%B,"",""
)
)>paygoinvoice.csv
@echo on
あなたが抱えている問題は、delims=,
あなたがあなたのFOR
ループに持っているものが変化を引き起こしている、DEVILS DUE /1FIRST COMICS, LLC
またはあなたのコード内の任意のコンマがスペースとしてあるということです。
これをTokens=
then %%H
= DEVILS DUE /1FIRST COMICS
--- And --- %%I
= と組み合わせLLC
ます。
(私が知っている)手っ取り早い修正は", "
、main関数で実行する前に、すべてを別のものに変更することです。私の例では、を使用しました1Comma1
。これにより、IF
検索がに変更されますDEVILS DUE /1FIRST COMICS1Comma1 LLC
。
Fixed.Bat:
@echo off & Setlocal EnableDelayedExpansion
Rem | Replace all ", " with "1Comma1"
for /f "tokens=1,* delims=¶" %%A in ('"type datatest.csv"') do (
SET string=%%A
setlocal EnableDelayedExpansion
SET modified=!string:, =1Comma1 !
>> datatest.csv.TEMP echo(!modified!
endlocal
)
Rem | Main .CSV Edit Function
( FOR /f "tokens=1-8* delims=," %%A in ('More +4 datatest.csv.TEMP') do (
Set "ItemData=%%H"
if "%%H"=="1" Set "ItemData=1005"
if "%%H"=="3" Set "ItemData=1008"
if "%%H"=="BOOM STUDIOS" Set "ItemData=NEW STUDIOS"
if "%%H"=="DEVILS DUE /1FIRST COMICS1Comma1 LLC" Set "ItemData=DEVILS DUE"
echo %%A,%%B,%%C,%%D,%%E,%%F,%%G,!ItemData!,%%I
)
)>paygoinvoice.txt
del datatest.csv.TEMP
@echo on
PS:上記の例で使用したコードは、この件に関する前回の投稿から取得したものです。新しいコードが属する場所に追加するだけです。
また、ループまたはステートメントの出力からEnableDelayedExpansion
自動削除さ!
れることにも注意してください。FOR
IF
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加