とりあえず、ファイル名を置き換えたいときに利用する。 バッチファイルが一瞬走るんでちょっとうざいけど、問題なく動作した。
@echo off
setlocal enabledelayedexpansion
:: 現在の日付と時間を取得(yyMMdd HH.mm.ss.ff)
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /value') do set datetime=%%I
set YY=%datetime:~2,2%
set MM=%datetime:~4,2%
set DD=%datetime:~6,2%
set HH=%datetime:~8,2%
set MIN=%datetime:~10,2%
set SS=%datetime:~12,2%
set FF=%datetime:~15,2%
:: カウンター(ファイルごとに連番を振る)
set COUNT=0
:: 各ファイルの処理
for %%F in (%*) do (
set /a COUNT+=1
set "filename=%%~nxF"
set "filepath=%%~dpF"
set "outputs_folder=%%~dpFoutputs"
:: outputs フォルダを作成
if not exist "!outputs_folder!" mkdir "!outputs_folder!"
:: 連番を3桁で設定
set "num=00!COUNT!"
set "num=!num:~-3!"
:: 新しいファイル名を作成(拡張子を維持)
set "newname=data_!YY!!MM!!DD! !HH!.!MIN!.!SS!.!FF!_!num!%%~xF"
:: copy コマンドでリネーム&コピー(元ファイルは残す)
copy /Y "%%~F" "!outputs_folder!\!newname!"
echo Copied and renamed: %%~F → "!outputs_folder!\!newname!"
)
pause
出力は、ドラッグアンドドロップしたファイルのあるフォルダーに output フォルダーを作成して、その中に移動する。 複数ファイルをドラッグアンドドロップされたときのために、末尾に連番 "_00x" を付与している。
data_250310 18.06.53.73_001.ext
ファイルを残さず移動させたいときは move がいいと思う。
move "%%~F" "!outputs_folder!\!newname!"