送るからファイル名に「_YYMM」付与(コマンドプロンプト)

投稿者: | 2023-01-05

目次

MEMO

  • ファイル名にスペースがあると「コマンドの構文が誤っています」エラーになる
  • 文字コードはやはり「Shift-JIS」で、あと改行コードが「CRLF」(Windows)でないとだめ(LFだとNG。LFはMac)
  • 送るフォルダには、バッチ本体をおかなければならない(ショートカット不可)

TODO

  • 複数のファイルに付与も可能かも
サンプル(できるかどうかは不明)
@echo off

for %%f in (%*) do call :sub "%%f"
exit /b

:sub
set fname=%1
set year=%date:~2,2%
set month=%date:~5,2%
set day=%date:~8,2%

rem set newfname=%year%%month%%day%%fname%
set newfname=%year%%month%%day%%fname%

rem ren %fname% %newfname%
ren %1 %newfname%

goto :EOF

参考HP

発展

  • Pythonからシステムコマンドを使えると便利になるはず

コマンドプロンプトのバッチでも作れる

@echo off

rem 環境変数からWindowsのシステム日時を取得し、形式を変える

set val_date=%date%
set val_time=%time%

echo =================================================

echo ■1-1.標準(YYYY/MM/DD)
echo %val_date%

echo ■1-2.置換(YYYYMMDD)
rem %変数名:対象文字=置き換え文字%
set val_date1=%val_date:/=%
echo %val_date1%

echo ■1-3.切り抜き(YYMMDD)
rem %変数名:~開始位置,文字数%(負の数だと末尾から)
set val_date2=%val_date1:~-6%
echo %val_date2%

echo ■1-4.切り抜き(YYMM)
rem %変数名:~開始位置,文字数%(負の数だと末尾から)
set val_date3=%val_date1:~2,4%
echo %val_date3%

echo ■1-5.切り抜き(MMDD)
rem %変数名:~開始位置,文字数%(負の数だと末尾から)
set val_date4=%val_date1:~-4%
echo %val_date4%

echo =================================================

echo ■2-1.標準(HH:MM:SS.ss)
echo %val_time%

echo ■2-2.時(HH)が1桁だった場合、1文字目の半角スペースを0に置換する
rem %変数名:対象文字=置き換え文字%
set val_time1=%val_time: =0%
echo %val_time1%

echo ■2-3.置換(HHMMSS.ss)
rem %変数名:対象文字=置き換え文字%
set val_time2=%val_time1::=%
echo %val_time2%

echo ■2-4.切り抜き(HHMMSS)ミリ秒2桁は不要
rem %変数名:~開始位置,文字数%(負の数だと末尾から)
set val_time3=%val_time2:~0,6%
echo %val_time3%

echo ■2-5.切り抜き(HHMM)
rem %変数名:~開始位置,文字数%(負の数だと末尾から)
set val_time4=%val_time3:~0,4%
echo %val_time4%

echo =================================================

pause

送るメニューからファイル名の後に「_YYMM」を付与

  • 参考HP:~~~
  • ShiftJISで保存すること

バッチファイルを作成する

@echo off

rem ファイル右クリック「送る」から末尾に「_YYMM」を付与

rem YYYY/MM/DDから/を除去しMMDDのみ取り出す(_YYMMのアンダーバーには""で囲まなくてもよい)
set suffix=%date:/=%
set suffix=_%suffix:~-4%

rem 「%~n1」でファイル名(拡張子除く)を「%~x1」で拡張子を分けて取得
set before_fname=%~n1%~x1

rem その間に変数suffixを挿入したファイル名を作成
set after_fname=%~n1%suffix%%~x1

rem ファイル名を変更
rename %before_fname% %after_fname%

送るメニューにバッチファイルを格納

  • ファイル名を指定して実行で「shell:sendto」して、送るメニューのフォルダを開く
  • そこにバッチファイルを格納する
  • バッチファイル名がそのまま送るメニューに表示される
  • ファイルを指定して、右クリック>「_YYMM」を付与のバッチファイルを選択するとリネームされる