2017-01-19 8 views
0

複数の.RTFファイル(file1)を特定の情報で検索するバッチファイルがあり、file2にドキュメントの名前が入ります。私は、ファイル2の内容に基づいて添付ファイルとしてすべてのfile1を送信するために、コマンドライン電子メールプログラムで使用するコンマ区切りファイル(file3)を作成する必要があります。Windowsバッチファイルを使用してファイルの各行の末尾にカンマを追加します。

私が持っているバッチファイルは、すべてfile1とfile2を正しく作成します。私は、file2の文書名の最後にカンマを追加し、ECHOコマンドを発行するときにカンマで文書名を表示するFOR文を持っています。

バッチファイルは、遭遇した最後のドキュメント名/カンマのみをfile3に出力します。

file2のすべてのドキュメント名をfile3に書き込むには、各行の末尾にカンマを付けてください。

電流出力ファイル3へ:

7868685425587963.rtf, 

所望の出力ファイル3へ:

7868684496427836.RTF, 
786868535408221.RTF, 
7868685416423800.RTF, 
7868685425587963.rtf, 

スクリプトバッチファイルで:

setlocal 

del file2.txt 
del file3.txt 

set comma=, 
echo %comma% 

rename *.DAT *.RTF, 

findstr /m "0097" *.RTF >> file2.txt 

for /f %%a In (file2.txt) DO set str=%%a%comma% 
echo %str%>> file3.txt 

pause 

endlocal 

コマンドライン出力:
command line output

私はこれを数週間にわたって断続的に把握しようとしており、多くの反復を試みました。代わりに、何度もSTRを設定する

+0

'>> file3.txtを(/ F %%で(FILのためにe2.txt)DO echo(%% a%comma%) ' – JosefZ

+2

あなたのcmdウィンドウからテキストをコピーしてください - 写真へのリンクを投稿しないでください。 – LotPings

答えて

0

for /f %%a In (file2.txt) DO set str=%%a%comma% 
echo %str%>> file3.txt 

は、直接ファイルに追加します。

for /f %%a In (file2.txt) DO echo %%a%comma%>> file3.txt 
0

あなたのコードに問題はコマンドecho %str%for /Fループの外にあるので、それはループの後に実行され、最後の行だけを出力していることです。 LotPingsは既にその解決方法をanswerで示しています。

しかし、あなたはあなたの仕事のための暫定ファイルfile2.txtを作成する必要はありません、for /Fループがfindstrコマンドラインの出力をキャプチャするために使用することができます:あなたはすべての.rtfを検索したい場合は

> "file3.txt" (
    for /F "delims=" %%F in (' 
     findstr /M /F:"file1.txt" "0097" 
    ') do (
     echo(%%F, 
    ) 
) 

むしろ.rtfファイルを一覧表示し、ファイルfile1.txtに頼るよりも、現在のディレクトリ内のファイルは、代わりにこれを使用する:

> "file3.txt" (
    for /F "delims=" %%F in (' 
     findstr /M "0097" "*.rtf" 
    ') do (
     echo(%%F, 
    ) 
) 
関連する問題