cmd: ファイル名に日付と時刻を含める

cmd: ファイル名に日付と時刻を含める

ファイル名 YYYY.MM.DD_HH.MM.SS.7z を取得するにはどうすればよいですか? どの地域設定でも機能するはずです。

質問は重複していません7-Zip CMD: アーカイブに現在の日付を追加し、最後に変更されたフォルダーのみをアーカイブに含める私も秒数が必要なので。

よろしくお願いいたします。

答え1

この質問は技術的には別の質問ですが、答えは他の質問と本質的に同じです。

Echo "%DATE:~-4%.%DATE:~4,2%.%DATE:~7,2%_%TIME:~0,2%.%TIME:~3,2%.%TIME:~6,2%

ただし、どの地域設定でも動作する必要があると指定されているため、その回答は完全にはニーズを満たしていません。私の知る限り、cmd.exe 内でニーズをネイティブに満たす方法はありません。cmd ではなく PowerShell でこれを行うことを強くお勧めします。

答え2

指示:

echo "%DATE:~10,4%.%DATE:~7,2%.%DATE:~4,2%_%TIME:~0,2%.%TIME:~3,2%.%TIME:~6,2%.7z"

出力:

"2012.27.05_22.11.58.7z"

答え3

@echo off
color 4f
mode 40,3
title Rename to date and time
::
:: Chunks gathered 'here & there'...
:: Batch rename 1 by 1 w. short delay, 
:: to date + time w. milliseconds => 
:: no overwriting.
::
:: Western European regional settings:
:: OK. ANY regional settings: ?.. Might 
:: require 'env. variables' replacement.
::

:7ZLOOP
setlocal
set "source=1_7z-orig-files-dir"
set "target=2_tmp"
::
if not exist "%target%\" md "%target%"
if not exist "%source%\*.7z" goto END
for %%F in ("%source%\*.7z") do (
set "file=%%~nxF"
move /y "%%F" "%target%" >nul
goto :break
)
:break
::   %time:~-2,2%  and  :loop set 
::   to 250  prevent overwriting:
::
set d=%date:~-4,4%-%date:~-7,2%-%date:~-10,2%
set d=%d: =_%
set t=%time:~-11,2%-%time:~-8,2%-%time:~-5,2%__%time:~-2,2%
set t=%t: =0%
::
ren "2_tmp\*.*" "%d%__%t%.*"
:loop
set /a count = count + 1
if %count%==250 goto endloop
goto loop
:endloop 
::
move /y 2_tmp\*.* .\
endlocal
goto 7ZLOOP
:END

関連情報