スポンサーリンク

Windows treeコマンドの結果をエクセルに貼れるように整形

「├─|└─|│  |    |│」

上記の「」内の文字列を\tに正規表現置換

細かく書くと以下。順次置換していっても同じ結果

「├─」をタブ文字に置換

「└─」をタブ文字に置換

「│  」をタブ文字に置換

「    」をタブ文字に置換

「│」をタブ文字に置換

 

C:.
│  001.txt
│  002.txt
│  tree.xlsx

└─aaa
    ├─aaa01
    │      aaa01.txt
    │
    └─bbb01
            bbb01.txt

上記が以下になる。

 

エクセルにペタッと貼り付けられる。インデントがいい感じ。

 

Windows batファイルでシェアポイントのエクセルファイルを開く

●編集可能で開く
start "" "ms-excel:ofe|u|パス"

 

●読取専用で開く。「ブックの編集」ボタンが出てきて押せば編集も可能。
start "" "ms-excel:パス"

 

●パスについて

・エクセルの「ファイルの場所」からコピーしたURLは半角スペースが%20になるが、これを本物の半角スペースにしてやると開けるようになる。

 

 

ファイル・フォルダに現在日時を付ける ps

ファイル・フォルダに現在日時を付ける.ps1

# エラー有無
$IsError = 0;

# 受け取ったファイルに対して以下の処理を実行
foreach ($Path1 in $args) {
    Write-Output ""

    # ファイルが存在する場合
    if (Test-Path $Path1) {
        # 現在日時を取得
        $CurrentTime = Get-Date -Format "yyyyMMdd_HHmmss"

        # フォルダの場合
        if ( (Get-Item $Path1) -is [System.IO.DirectoryInfo] )  {
            Write-Output ■フォルダ:$Path1
            $NewFilePath = (Split-Path -Leaf $Path1) + "_" + "$CurrentTime"
            # Write-Output $NewFilePath
        } else {
            # ファイルの場合
            Write-Output ■ファイル:$Path1

            # 拡張子以外のファイル名を取得
            $FileName = [System.IO.Path]::GetFileNameWithoutExtension($Path1)
            # 拡張子を取得
            $Extension = [System.IO.Path]::GetExtension($Path1)
            # 新しいファイル名を作成
            $NewFileName = "$FileName" + "_" + "$CurrentTime" + "$Extension"
            # ファイルパス
            $NewFilePath = [System.IO.Path]::Combine([System.IO.Path]::GetDirectoryName($Path1), $NewFileName)
            #Write-Output NewFilePath:$NewFilePath
        }

        # リネーム ※ファイルがロックされているとここでエラーが起きる
        Rename-Item -Path $Path1 -NewName $NewFilePath
        # エラーの場合、エラーフラグオン
        if ($? -ne "True"){
            #Write-Output "Error:「$Error」"
            $IsError = 1;
        } else {
            Write-Output "Renamed $Path1 to $NewFilePath"
        }
    } else {
        # ファイルが存在しない場合
        Write-Output "File not found: $Path1"
    }
}

exit $IsError

ファイル・フォルダに現在日時を付ける【複数可】.cmd

echo off
rem 概要
rem  指定された複数ファイル・フォルダに以下の処理を実施
rem   ①ファイル名末尾に現在日時[_yyyymmdd_hhmmss]を付与
rem 
rem 使い方
rem  このcmdファイルにファイル(複数可)をドラッグアンドドロップ
rem 
rem 注意
rem  選択ファイル数には限界があります(バッチの引数の最大文字数に依存)

echo 【バッチ】のパラメータ:%*
echo -

rem ■powershellの実行
powershell -NoProfile -ExecutionPolicy RemoteSigned -File "%~dp0\ファイル・フォルダに現在日時を付ける.ps1" %*
rem echo 戻り値:%ERRORLEVEL%

rem エラーがある場合は一時停止
IF %ERRORLEVEL% == 1 (
    echo エラーあり
    pause
)

rem %~nx0はバッチファイル名
rem echo 【バッチ】%~nx0の処理終了

ファイル、フォルダに更新日時をつけるPowerShell

ファイル・フォルダに更新日時を付ける.ps1

# エラー有無
$IsError = 0;

# 受け取ったファイルに対して以下の処理を実行
foreach ($Path1 in $args) {
    Write-Output ""

    # ファイルが存在する場合
    if (Test-Path $Path1) {
        # 更新日時を取得
        $LastWriteTime = (Get-Item $Path1).LastWriteTime
        # 更新日時をyyyyMMdd_HHmmss形式にする
        $FormattedTime = $LastWriteTime.ToString("yyyyMMdd_HHmmss")

        # フォルダの場合
        if ( (Get-Item $Path1) -is [System.IO.DirectoryInfo] )  {
            Write-Output ■フォルダ:$Path1
            $NewFilePath = (Split-Path -Leaf $Path1) + "_" + "$FormattedTime"
            # Write-Output $NewFilePath
        } else {
            # ファイルの場合
            Write-Output ■ファイル:$Path1
            # 拡張子以外のファイル名を取得
            $FileName = [System.IO.Path]::GetFileNameWithoutExtension($Path1)
            # 拡張子を取得
            $Extension = [System.IO.Path]::GetExtension($Path1)
            # 新しいファイル名を作成
            $NewFileName = "$FileName" + "_" + "$FormattedTime" + "$Extension"
            # ファイルパス
            $NewFilePath = [System.IO.Path]::Combine([System.IO.Path]::GetDirectoryName($Path1), $NewFileName)
            #Write-Output NewFilePath:$NewFilePath
        }

        # リネーム ファイルがロックされているとここでエラーが起きる
        Rename-Item -Path $Path1 -NewName $NewFilePath
        # エラーの場合、エラーフラグオン
        if ($? -ne "True"){
            #Write-Output "Error:「$Error」"
            $IsError = 1;
        } else {
            Write-Output "Renamed $Path1 to $NewFilePath"
        }
    } else {
        # ファイルが存在しない場合
        Write-Output "File not found: $Path1"
    }
}

exit $IsError

ファイル・フォルダに更新日時を付ける【複数可】.cmd

echo off
rem 概要
rem  指定された複数ファイルに以下の処理を実施
rem   ①ファイル名末尾に更新日時[_yyyymmdd_hhmmss]を付与
rem 
rem 使い方
rem  このcmdファイルにファイル(複数可)をドラッグアンドドロップ
rem 
rem 注意
rem  選択ファイル数には限界があります(バッチの引数の最大文字数に依存)

echo 【バッチ】のパラメータ:%*
echo -

rem ■powershellの実行
powershell -NoProfile -ExecutionPolicy RemoteSigned -File "%~dp0\ファイル・フォルダに更新日時を付ける.ps1" %*
rem echo 戻り値:%ERRORLEVEL%

rem エラーがある場合は一時停止
IF %ERRORLEVEL% == 1 (
    echo エラーあり
    pause
)

rem %~nx0はバッチファイル名
rem echo 【バッチ】%~nx0の処理終了

無限ループシェル。停止機能あり。

意図的に無限ループを発生させて、任意のタイミングで終了させたいときのシェル

ログの出力間隔と、loop.txtを参照しに行く間隔は設定可能。

#!/bin/bash

##################################################
# 概要:loop.txtの値が"1"になるまで無限ループ
# 
# 備考:loop.txtが当シェルと同じディレクトリに
#       存在しない場合は値"0"で作成します。
# 
# loop.txt用コマンド
#   echo 1 > loop.txt
#   echo 0 > loop.txt
#
##################################################

# ミリ秒スリープ時間(例:100ms)
SLEEP_MS=1000

#ログ出力間隔(ms)。スリープ時間よりも大きくする
LOG_INTERVAL_MS=10000

#経過時間
LOG_ELAPSED_TIME=0

# loop.txt のパス(このスクリプトと同じディレクトリ)
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
LOOP_FILE="$SCRIPT_DIR/loop.txt"

# [ loop.txtの値が"1"になるまで無限ループ ]
while true; do
    # loop.txt が存在するか確認、なければ作成して "0" を書き込む
    if [ ! -f "$LOOP_FILE" ]; then
        echo "0" > "$LOOP_FILE"
    fi

    # loop.txt の内容を読み取る
    VALUE=$(<"$LOOP_FILE")

    # 内容が "1" ならループを抜ける
    if [ "$VALUE" = "1" ]; then
        echo `date +"%Y/%m/%d %H:%M:%S"` "ループ終了条件を検出しました。"
        break
    fi

    # ミリ秒スリープ(sleep は秒単位なので 100ms = 0.1秒)
    sleep "$(bc <<< "scale=3; $SLEEP_MS/1000")"

    # 経過時間 = 経過時間 - ミリ秒スリープ時間
    ((LOG_ELAPSED_TIME = LOG_ELAPSED_TIME + SLEEP_MS))
    
    # 経過時間 > ログ出力間隔の場合
    if [ "$LOG_ELAPSED_TIME" -ge "$LOG_INTERVAL_MS" ]; then
        # 経過時間 = 経過時間 - ログ出力間隔
        ((LOG_ELAPSED_TIME = LOG_ELAPSED_TIME - LOG_INTERVAL_MS))
        echo `date +"%Y/%m/%d %H:%M:%S"` 無限ループ中
    fi
done

exit 0

motorola Smart ConnectでChromeリモートデスクトップを試す

motorola Smart ConnectでChromeリモートデスクトップを使ってみた。

これが意外に使えたのでメモ。

 

■前提

・Type-Cハブで

 HDMI出力(フルHDモニタ)

 キーボード、マウス

 

■感想

・文字入力が「テキストを送信」を経由せずに普通にできる。

 キーボード配列も普通に日本語配列での入力になる。

・shift + win + s はsmart connectのスクショ取得になる。

 スクショはSnipping Toolのアイコンから起動すればよい。

・ctrl + alt + delはリモート先に送られる。

・完全に全画面にするにはChromeリモートデスクトップの設定の

 画面右上のピンボタンを押下

 画面右上のキーボードボタンを押下

・普通に使えるのでネット環境とディスプレイ、キーボード、マウスがあれば普通に使えそうな印象

・マウスカーソルが迷子になることがあるがいろいろ動かしてるうちにちゃんと出るようになる。

・「キーボード ショートカットを設定」が有効だとShiftキーで大文字入力がうまく機能しなくなるので無効にしておく。

 

テキストのみで申し訳ないが上記のような感じ。

この記事も試しにChromeリモートデスクトップを使って書いている。特に問題ない。

ただディスプレイ、キーボード、マウスがあるということはWindowsマシンがあるのが普通であり、そちらを使ったほうが早いし快適と思われる。

そうするとSmart Connectの意味とは?とはなる。

 

motorolaスマホのSmart Connectでスクショの貼り付けを試す

motorolaスマホをゲットした。

Smart Connect機能でHDMI出力できるUSBハブを使えば大画面モニタに映してキーボード、マウスも使用できる。

今回はSmart Connect内でスクリーンショットを撮る → 画像をクリップボードから各アプリに貼り付けできるか、に焦点を当てて見てみる。

 

日本語入力はクリップボードが使用できるGboardを使用。

 

各アプリで試したところ以下のような結果。

アプリ クリップボードからの画像貼り付け 左記不可時の代替手段
Twitter OK
Line OK
Gmail OK
Aqua Mail OK
Excel Excel はここでの画像の貼り付けをサポートしていません」と出る。 挿入タブの「画像」ボタンでファイルから挿入
M365 CopilotのExcel 「M365 Copilotはここでの画像の貼り付けをサポートしていません」と出る。 挿入タブの「画像」ボタンでファイルから挿入
M365 CopilotのWord 「M365 Copilotはここでの画像の貼り付けをサポートしていません」と出る。 挿入タブの「画像」ボタンでファイルから挿入
EdgeでOutlook 「Edgeはここでの画像の貼り付けをサポートしていません」と出る。 インライン挿入
ChromeOutlook Chromeはここでの画像の貼り付けをサポートしていません」と出る。 インライン挿入
OperaOutlook Operaはここでの画像の貼り付けをサポートしていません」と出る。 インライン挿入
Outlook 「この操作を完了するためのアクセス許可がありません」と出る。 無し
Outlook Lite Outlook Liteはここでの画像の貼り付けをサポートしていません」と出る。 「インライン挿入」でファイルから画像を挿入

 

ExcelOutlook Liteで使えて欲しかったがどちらもダメ。

上記アプリで使えれば普段使い出来たかもしれないがまだまだ使えるとは言い難い。

代替手段はあるもののWindowsに比べて非常に手間が多い。

スクショ取得→すぐ「貼り付け」ってしたい

やはりまだWindowsの方が使い勝手が良い。