私はこのバットファイルをどのように書く必要があるかを研究しています。何がうまくいかないのか分かりません。バットファイル:複数のファイルを解析してCSVに書き込む
問題/目標:私は5つのキー値を解析する必要がある巨大なtxtファイルがあります。各テキストファイルの最初の195行は、本質的に私が関心のないゴミです。
5つのテキストファイルがあり、それぞれ1つは5つのサブディレクトリにあります。 目標は、これらの5つのキー値(トークン7,11,19,21,25)をcsvファイルに書き込むことです。 (テキストファイルごとに5つのキー値がそれぞれ1800あります - 私が作成するcsvファイルの合計9000行を作成します)
最初のforループを入力すると「do (今のところ予期せぬことだった "
これは私の初めてのバットファイルに関数を書く、または1つ以上のループを必要とする。私は複数の場所で私の構文を微調整したが、同じエラーが発生する。何か不足していますが、わかりません。最初のループに入ることもできないので、私がまだ気づいていない追加のエラーもあります。
コード:
@ECHO OFF
setlocal enabledelayedexpansion
set fileout="C:\ffmpeg\fit.csv"
for /R %%f in (*.txt) do (
set THEFILE=%%f
call :setTokens
goto TheEnd
)
:setTokens
for /F "skip=195 tokens=* delims=" %%A in ('%THEFILE%') do(
set the_line=%%A
call :process_line
)
:process_line
for /F "tokens=7,11,19,21,25 delims= =:" %%a in ('%the_line%') do (
set qp=%%a
set slice=%%b
set skip=%%c
set size=%%d
set y=%%e
set OUTLINE=%qp%,",",%slice%,",",%skip%,",",%size%,",",%y%
echo %OUTLINE%>>%fileout%
)
:TheEnd
'do(' - > 'do(' – aschipfl
あなたが*ループ内の 'qp' etc *の値を変更しているので* (あなたが* delayedexpansion *を呼び出したように) '!qp!'を使って値を抽出すると、 '%qp%'は解析時に変数の値*を返します。これはあなたがaschipflの変更を呼び出したことを前提とし、 'qp'に割り当てた値を操作していないので、' metavariable''の '%% a'.. %% e' – Magoo