72333
(希望）以下の2行目と3行目を、1行にできますか？短くなりますか？

```

    chcp 65001
    echo %date% %TIME:~0,8% コメント >> txt.txt
    echo %date% %TIME:~0,8% コメント | clip
    
```

よろしくお願いします。
CC BY-SA 4.0
2020-11-30T12:39:46.213
72296
2020-12-02T02:09:10.337
2020-12-01T03:35:08.213
4236
17199
question
windows batch-file
echoの出力を、（パイプ？）ファイル出力とクリップボードへ連続出力したい。
２行目と３行目が対等でないことが気になりました。２行目は既存のコンテンツを残したまま追記しています。しかし３行目はそうではなくクリップボードの更新です。`echo`した１行分だけの値になります。  
これは本当に望む操作なのでしょうか？

```

    chcp 65001
    echo %date% %TIME:~0,8% コメント >> txt.txt
    ほかにもいろいろ >> txt.txt
    
    clip < txt.txt
    
```

が望む操作だったりしませんか？
CC BY-SA 4.0
2020-12-01T03:34:52.817
72309
2020-12-01T03:34:52.817
4236
72296
answer
> クリップボードの更新です。echoした１行分だけの値になります。これは本当に望む操作なのでしょうか？

はい、望む操作です。説明不足で申し訳ありません。

(目的)  
時間管理です。  
実行時刻の履歴を追加していく。  
ついでに、最後の実行結果のみ(1行だけ)をクリップボードへ保存して、すぐにペーストしたい。

(テスト未)  
2つコマンドを実行しているので、時間差が発生すると、思います。

(実行例)  
実行ファイルを２つ用意する。  
1つ目のファイルのコメント：ランチ開始時刻  
2つ目のファイルのコメント：ランチ終了時刻

(目標)  
①テキスト出力ファイルを使って、ランチタイムの時間集計、平均したい。  
②androidでやってみたい。  
③任意のコメントを入力したい。  
④12時間円グラフ表示したい。

よろしくお願いいたします。
CC BY-SA 4.0
2020-12-01T10:12:52.190
72323
2020-12-01T10:12:52.190
17199
72296
answer
```

    chcp 65001
    echo %date% %TIME:~0,8% コメント >> txt.txt & clip < txt.txt
    
```

上記ソースだと、出力ファイル全部がクリップボードに入ります。  
実行結果(出力ファイル)  
2020/12/01 9:06:23 コメント  
2020/12/01 9:06:30 コメント  
実行結果(クリップボード)  
2020/12/01 9:06:23 コメント  
2020/12/01 9:06:30 コメント  
↓  
↓  
①以下のように、最後の実行結果。最終行の1行だけクリップボードへ保存可能ですか？  
実行結果(ファイル)  
2020/12/01 9:06:23 コメント  
2020/12/01 9:06:30 コメント  
実行結果(クリップボード)  
2020/12/01 9:06:30 コメント

②他の方法は、まだ試していません。申し訳ございません。

③変数を使う方法しか、ありませんか？
CC BY-SA 4.0
2020-12-01T10:17:40.583
72325
2020-12-01T10:27:56.247
2020-12-01T10:27:56.247
17199
17199
72296
answer
コメントにUpvoteが付いていて、要望にフィットしているらしいので回答として書き出します。

* * *

`2行目と3行目を、1行にできますか？短くなりますか？`については[XY問題](https://ja.meta.stackoverflow.com/q/2701/26370)で、課題の肝心な部分は、元のやり方では時刻情報の取得が別々に2回行われるので違う時刻が記録される可能性があり、それを回避したいということですね。

以下のような候補が考えられます。

  * 環境変数を使う
  * PowerShellコマンドを使う
  * フリーソフトを使う

その前に、`③任意のコメントを入力したい。`件については、以下の記事が応用できるでしょう。  
[【Windows】バッチファイルのコマンドライン引数](https://qiita.com/bokkuri_orz/items/9c9c93fae56cc8653988)  
[すべての引数を一括で取得する](https://jj-blues.com/cms/wantto-getallargments/)

`%*`を使えば空白が含まれていても1つの文字列として使えます。

* * *

**環境変数**

日時情報の取得を1回だけにして、それを作業用の環境変数に格納し、テキストファイルへの追記やクリップボードへの出力は別途行います。  
1行にまとめる必要は無く、むしろ行数は増えます。  
特に気にする必要は無いのですが、それでも環境変数が増えることを気にするならば、`setlocal`を指定してバッチファイル内だけで使うようにします。

以下のように出来るでしょう。

```

    setlocal
    chcp 65001
    set  logstr=%date%%TIME:~0,8% ランチ開始時刻 %*
    echo %logstr% >> txt.txt
    echo %logstr% | clip
    
```

* * *

**PowerShellコマンド**

質問で使われている`clip.exe`はクリップボードへ書き込むだけのもので、読み出す方法は有りませんが、それがPowerShellコマンドで出来ます。  
[Windows10でクリップボードの内容をコマンドで受け渡しする](https://4thsight.xyz/9317)

> 逆にクリップボードの内容（テキストデータ）を取得する場合は、PowerShellの「Get-Clipboard」コマンドレットを利用します。

こんな記事も
[クリップボード操作](https://qiita.com/kurukurupapa@github/items/37fc3fe4ec27612ab7df#%E3%82%AF%E3%83%AA%E3%83%83%E3%83%97%E3%83%9C%E3%83%BC%E3%83%89%E6%93%8D%E4%BD%9C)

先にクリップボードへ書き込んで、その次にPowerShellコマンドでクリップボードからテキストファイルへ追記します。

```

    chcp 65001
    echo %date% %TIME:~0,8% ランチ開始時刻 %* | clip
    powershell -command "get-clipboard" >>txt.txt
    
```

こちらも1行にまとめる必要は無いのですが、それでもまとめたいなら`&`で続けて実行します。  
[複数のコマンドを続けて実行する](https://www.adminweb.jp/command/action/index1.html)

```

    chcp 65001
    echo %date% %TIME:~0,8% ランチ開始時刻 %* | clip & powershell -command "get-clipboard" >>txt.txt
    
```

ただし、上記だと両方とも改行が1つ余分に追加されて空行が出来るようなので、もう少し工夫が必要でしょう。  
いっそ全部PowerShellのスクリプトにするのも有りかもしれません。

* * *

**フリーソフト**

パイプの途中に入れて使えるフリーソフト[safetee](https://www.vector.co.jp/soft/dos/util/se482246.html)というのがあります。

> 標準出力と標準エラー出力を画面とファイルに出力する tee

以下のように出来ます。

```

    chcp 65001
    echo %date% %TIME:~0,8% ランチ開始時刻 %* | safetee -a txt.txt | clip
    
```

ソース付きなので、追加したい機能があれば、自分で改造することも出来ます。

* * *

**その他**

> ②androidでやってみたい。  
>  ④12時間円グラフ表示したい。

これらは別の手段が必要で、やり方を聞きたいならば別の質問を起こしてください。

ちなみにandroidには標準のスクリプト実行環境は無いと思われますし、そうした環境をインストール・セットアップするのは手間がかかるでしょうから、何か専用のアプリケーションを作った方が良さそうです。
CC BY-SA 4.0
2020-12-02T02:09:10.337
72333
2020-12-02T02:09:10.337
26370
72296
answer