1

まず、私のコーディング能力の低さをお詫びします。ただし、フォーラムを読んでクラックを与えるのに数時間を費やしたので、次の問題について何か助けていただければ幸いです。

3 つのテキスト ファイルがあり、そこからファイル名、データの 3 行目、5 行目、7 行目を取得し、次のように 1 つの CSV にポップします。

filename1, linedata3, linedata5, linedata7
filename2, linedata3, linedata5, linedata7
filename3, linedata3, linedata5, linedata7

シンプル、え?そうではありません。コーディングの「スキル」が不足しているため、あなたの助けが必要です。これが私がこれまでに持っているものです:

最初のバッチ ファイル (go.bat):

@echo off
for /f "skip=2 delims=" %%i in (%1) do >>lines.txt echo %~n1 %%i & goto :EOF

次に手動コマンド ライン エントリ:

go.bat file1.txt
go.bat file2.txt
go.bat file3.txt

ご覧のとおり、1 行のテキストに対してこれを実行しましたが、出力の最後に 3 行目と 5 行目を追加する方法がわかりません。また、ディレクトリ内のすべてのテキスト ファイルに対してこれを実行できるように、適切なコマンド ライン エントリが必要です。私は次のことを試しましたが、何かが欠けているようです:

for %i in (*.*) do go.bat "%i"

体の助けはありますか?

どうもありがとう!ジェームズ

4

2 に答える 2

2
@echo off
setlocal EnableDelayedExpansion
if exist result.csv del result.csv
for %%f in (*.txt) do (
    set i=0
    for /F "delims=" %%l in (%%f) do (
        set /A i+=1
        set line!i!=%%l
    )
    echo %%f, !line3!, !line5!, !line7! >> result.csv
)

あなたが言ったように、このバッチファイルはディレクトリ内のすべての.txtファイルを処理します。

于 2011-10-21T22:59:04.707 に答える
1

別の構成で行を読み取ることができます。

setlocal EnableDelayedExpansion
< %1 (
Set /p line1=

Set /p line2=
Set /p line3=
Set /p line4=
Set /p line5=
Set /p line6=
Set /p line7=
)
Echo %1,!line3!,!line5!,!line7!

またはループ付き (Andriy)

Setlocal EnableDelayedExpansion
<%1 (
  For /L %%n in (1 1 7) do (
    Set /p line%%n=
  )
)
Echo %1,!line3!,!line5!,!line7!
于 2011-10-21T17:03:40.760 に答える