- ベストアンサー
バッチファイルでの計算方法
一行のみのtxtファイル(1111.txt)に日付 スペース 時間 スペース 値 が格納されています。 バッチファイルにて上記値に定数(6666)をかけ単位を追加して出力(2222.txt)したいとおもいます。 以下のように書いてみましたが どこが悪いかよくわかりません。 どなたかお教えいただきたいと思います @ECHO OFF FOR /F "eol=# tokens=1,2,3" %%a in (1111.txt) SET /A x=6666 SET y=%%c*%x% DO ECHO %%a %%b %%y >2222.txt
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >説明不足でしたが値の部分は小数が入りますし、かける数も0.00xxxのような小数でしたのでうまくいきませんでした。 こういう情報は大事なので質問の時に具体的に書いた方がいいですね。 バッチファイルだけだと実数計算できないので、WSHを併用する方法で作ってみました。 こんな感じでどうでしょうか。 SET x=0.00123 FOR /F "eol=# tokens=1,2,3" %%a in (1111.txt) do echo WScript.Echo "%%a %%b" , %%c*%x%>tmp.vbs cscript //nologo tmp.vbs>2222.txt del tmp.vbs
その他の回答 (2)
- pita-gora
- ベストアンサー率70% (102/145)
一行のみのtxtファイル(1111.txt)なので以下の記述でいかがでしょう。Windows XPで確認しました。 SET x=6666 FOR /F "eol=# tokens=1,2,3" %%a in (1111.txt) do SET /a y=%%c*%x%&&set head=%%a %%b echo %head% %y% >2222.txt ちなみに1111.txtの値はset /a を使うので整数しか扱えません。
- m-take0220
- ベストアンサー率60% (477/782)
> FOR /F "eol=# tokens=1,2,3" %%a in (1111.txt) forで解析したあとで実行するコマンドを示すdo ~ がありません。 複数行を実行したい場合は、()でくくります。 > SET y=%%c*%x% 数値計算させるのであれば/Aが必要です。 > DO ECHO %%a %%b %%y >2222.txt doはforに対してつけるものです。また、yは環境変数なので、%%yじゃなく%y%です。 上記を修正して、 @ECHO OFF FOR /F "eol=# tokens=1,2,3" %%a in ( 1111.txt ) DO ( SET x=6666 SET /A y=%%c*%x% ECHO %%a %%b %y%>2222.txt ) でうまくいくんじゃないかと思います。
補足
ありがとうございます。 説明不足でしたが値の部分は小数が入りますし、かける数も0.00xxxのような小数でしたので SET /Aで ECHO %%a %%b %y% の%y%の部分が空白になってしまいうまくいきませんでした。 よろしくお願いいたします。
補足
ありがとうございます。 説明不足でしたが値の部分は小数が入りますし、かける数も0.00xxxのような小数でしたのでうまくいきませんでした。 よろしくお願いいたします。