csvヘッダーの長さによって異なります。
コードでは、リダイレクトされた入力とset /p
を使用してヘッダーを読み取ります。この方法では最大1022文字の入力が可能です。
for /f
を使用してファイルを読み取ることもできますが、最大コマンド行の長さ(この場合は8192文字)に制限されています。
@echo off
setlocal enableextensions disabledelayedexpansion
(for /f "tokens=1,2,* delims=:" %%a in ('
findstr /n "^" *.csv ^| findstr /b "[^:]*:1:"
') do (
echo(%%a:
echo( %%c
)) > output.txt
このコードは、単に各ファイルの最初の行のみを取得findstr
コマンド、数に入れるの出力線とし、この出力から入力ファイルを読み込みます。 for /f
は、コロンを使用して行を分割し、行内の最初の3つのトークン(ファイル名、行番号、行の内容)を取得します。
が指摘したように、コメント
に適応するを編集し、そこには限界があると、実際のデータは、それに衝突しました。
私は防弾純粋なバッチソリューションが表示されませんが、ハイブリッドファイルは問題.cmd
または.bat
として保存
@if (@[email protected]) @then
@echo off
setlocal enableextensions disabledelayedexpansion
call :getBatchFileReference _f0
(
for %%a in (*.csv) do (
echo %%a
<"%%a" cscript //nologo //e:Jscript "%_f0%"
)
) > output.txt
goto :eof
:getBatchFileReference returnVar
set "%~1=%~f0"
goto :eof
@end
WScript.StdOut.WriteLine(WScript.StdIn.ReadLine());
を扱うことができ、ファイルは、バッチコードとで最終ゾーンとの最初のゾーンが含まれていますJavaScriptコード。
ファイルごとに、バッチ部分は入力としてjavascript部分にリダイレクトされ、最初の行を読み込んで出力します。
私は本当にあなたの問題を抱えていません...私はコードで作業してみるといいですね。 「ヘッダーがラインの最後でチョップされている」とはどういう意味ですか?例を表示できます –
'echo %% a%line%' - > 'echo %% a!line! ' – aschipfl
' setlocal'がループの中にあるのはなぜですか? –