-1

誰かがこれを手伝ってくれませんか。

プロンプトを介して入力されたバッチ ファイルに 5 つの変数があります。

set Name=john smith
set address=25 center street
set city=Hackenack
set state=NJ
set zip-07601

フィールドをカンマで区切った 1 行にすべての変数の内容を含む、clients.txt というカンマ区切りの出力テキスト ファイルを作成したいと考えています。

変数に異なる値を持つ何百もの入力レコードを用意します。

変数を 1 つの出力レコードにリダイレクトする方法を教えてほしいだけです。ありがとうございました

4

1 に答える 1

0
@echo off
setlocal
SET /P name="Name? "
SET /P address="Street address? "
SET /P city="City? "
SET /P state="State? "
SET /P zip="Zip? "

echo %name%,%address%,%city%,%state%,%zip% >> clients.txt

真の CSV 形式にしたい場合は、入力した値を次のように引用符で囲む必要があります。

echo "%name%","%address%","%city%","%state%","%zip%" >> clients.txt

テキスト ファイルを完全に 1 行にしたい場合 (グループごとに 1 行ではなく)、

set /p I="%name%","%address%","%city%","%state%","%zip%" <NUL >> clients.txt

後続set /p I=stuff<NUL >>clients.txtの各データは、改行なしで最初の行に追加されて書き込まれます。

説明

コンソールに出力された単一の>テキストを含むデータをエコーすると、代わりに新しい出力ファイルにリダイレクトされ、宛先ファイルが既に存在する場合は上書きされます。

double を使用してデータをエコーすると>>、出力は上書きせずに既存のファイルに追加されます (ファイルがまだ存在しない場合は作成されます)。

改行なしで追加するのは少しトリッキーで、ちょっとしたハッカーが必要です: set /p var=text to append<NUL >>outfile.txt. 詳細が必要な場合は、コメントを残してください。なぜそれが機能するのかを説明しようと思います.

于 2013-02-07T16:56:26.377 に答える