
スクリプトを変更しようとしています。 に行を追加する代わりにfile.txt
、ディレクトリ内のすべてのファイルに対して実行したいと思います*.txt
。 このスクリプトは新しい行を削除し、区切りとしてコンマを追加します。
ご協力いただければ幸いです。
@echo off
setlocal EnableDelayedExpansion
set "line="
for /F "delims=" %%a in (inputfile.txt) do set "line=!line!,%%a"
echo !line:~1!>>outputfile.txt
私が使用しようとしている入力ファイルは、以下のcsvです。 2019-05-29 08:03:48、傾斜A、3.420、19.9、0.5017、0.6903 2019-05-29 09:03:48、傾斜B、3.420、19.9、0.3017、0.6903 2019-05-29 08:03:48、傾斜C、3.420、19.9、0.5017、0.6903 2019-05-29 09:03:48、傾斜D、3.420、19.9、0.3017、0.6903 2019-05-29 08:03:48、傾斜E、3.420、19.9、0.5017、0.6903
答え1
ご説明いただきありがとうございます。これで正しい方向に進むはずです:
@echo off
set "dir=C:\Your\Directory"
set "dirs=C:\Your\Output\Folder"
setlocal enabledelayedexpansion
for /r "%dir%" %%A in (*.txt) do (
set "new=%%~nA"
if exist "%dirs%\!new!.txt" del /f /q "%dirs%\!new!.txt"
for /f %%B in (%%A) do (
echo|set /p="%%B,"
) >> "%dirs%\!new!.txt"
)
ソース txt ファイルを上書きする場合を除き、別の出力フォルダーを使用することを強くお勧めします。そのため、これが私が思いついた方法です。最初のループは、指定されたディレクトリ ( for /r %dir%
) 内のすべての txt ファイルを調べて、それぞれの名前を変数 として設定しますnew
。その直後に、出力ディレクトリにその txt ファイルが存在するかどうかを確認し、削除します。これは、 が以前のエントリをすべて上書きするため、 を使用してすべてのパラメーターを 1 行に出力するnew
必要があるため、重要なステップです。以前にスクリプトを実行して作成された可能性のある txt ファイルを削除しないと、行のエントリが複製されます。それが処理されると、ネストされた for ループが作成され、テキスト ファイルから情報を取得し、 を使用して各エントリを とともに同じ行に配置します。この基本的なスクリプトでは、削除するかどうかは任意ですが、末尾が残ります。それ以外の場合は、これで目的を達成できると思います。>>
%%B
>
new
echo|set /p
%%B
,
,