DCMTK (3.6.0) ライブラリを使用して、(0020,0013) タグの値を取得しています。これは、シリーズのスライス番号とも呼ばれる画像番号です。
バッチスクリプトで次を使用します
for /f "tokens=2 delims=[]" %%a in ('@echo. ^|c:\Libs\dcmtk-3.6.0\bin\dcmdump +P "0020,0013" %%i') do (set img_no=%%a)
通常はうまくいきますが、この値がシリーズ全体に対して常に「0」に設定されることがあります。
このコマンドでそれをダンプしようとしました
C:\Libs\dcmtk-3.6.0\bin>dcmdump +P "0020,0013" PathToInvalideDICOM\img.dcm
(0020,0013) IS [0] # 2, 1 InstanceNumber
(0020,0013) IS [4] # 2, 1 InstanceNumber
(0020,0013) IS [0] # 2, 1 InstanceNumber
C:\Libs\dcmtk-3.6.0\bin>dcmdump +P "0020,0013" PathToCorrectDICOM\img.dcm
(0020,0013) IS [0] # 2, 1 InstanceNumber
(0020,0013) IS [5] # 2, 1 InstanceNumber
ご覧のとおり、取得する値 (「0」ではない) が最後になる場合があります。この場合、すべてが良いです。ただし、特定のケースでは、正しい値が 2 つの「0」の間に格納されます。
別のダンパー (DCM4CHE 2.0.23) でも試してみましたが、同じ結果が得られました。
なぜこれが起こっているのか知りたいです。それ以上に、正しい値を取得する方法は?
バッチ ファイルで、正しい番号になるまで 0 を削除する方法はありますか?
デフォルトでは、上記のコマンドラインは最後のフィールドを取ります...と思います。