0

特定の列の値が 10 である行の数を取得するために SQLplus 選択を実行する DOS バッチ ファイルがあります。その値をバッチ ファイルに追加します。問題は、右詰めの 10 文字の文字列であることが原因のようです。

したがって、私の値が0の場合、これを取得します。

         0

または、値が 7000 の場合、次のようになります。

      7000

私が本当に欲しいのはこれです、

0

またはこれ

7000

列1から始まるデータがある場合、次を使用してデータを読み取ることができると確信しています。

for %%a in ("C:\Program Files (x86)\BBWin\ext\status10.LST") do if /I %%a GTR 300 echo %%a >> "C:\Program Files (x86)\BBWin\ext\status10.txt"
4

2 に答える 2

1

galuano1 の回答は確かに値からスペースを取り除きますが、あなたの場合は必要ありません。

FOR /F のデフォルトのトークン区切り文字はスペースとタブです。したがって、先頭のスペースはトリミングされます。値は左揃えにする必要はありません:-)

名前にスペースが含まれるファイルを読み取るには、USEBACKQ オプションを指定して FOR /F を使用する必要があります。

for /f "usebackq" %%a in ("C:\Program Files (x86)\BBWin\ext\status10.LST") do ...

しかし、ファイルさえ必要ありません。コマンドを一重引用符で囲むことにより、FOR /F を使用して sqlplus の結果を直接処理できます。

for /f %%a in ('sqlplus ...') do ...

FOR コマンドのヘルプ ドキュメントを注意深く読む必要があります: typeHELP FORまたはFOR /?コマンド ラインから。FOR の使用方法には、多くの微妙な違いがあります。

この優れた FOR ループのチュートリアルもご覧ください。

于 2012-07-31T16:19:54.460 に答える
0

次のようにしてスペースを削除できます

set str=%str: =%
echo."%str%"

str は、スペースを含む値を含む変数です。

詳細はこちら

于 2012-07-31T14:01:29.287 に答える