¿Cómo puedo obtener un nombre de archivo AAAA.MM.DD_HH.MM.SS.7z? ¡Debería funcionar con cualquier configuración regional!
La pregunta no se duplica.7-Zip CMD: agregue la fecha actual al archivo e incluya solo la última carpeta modificada en el archivoya que también necesito segundos.
Saludos,
Respuesta1
Bueno, si bien esta pregunta es técnicamente diferente, la respuesta es esencialmente la misma que la otra pregunta:
Echo "%DATE:~-4%.%DATE:~4,2%.%DATE:~7,2%_%TIME:~0,2%.%TIME:~3,2%.%TIME:~6,2%
Sin embargo, dado que especificó que debe funcionar con cualquier configuración regional, esa respuesta no satisface completamente sus necesidades. Hasta donde yo sé, no hay forma de satisfacer sus necesidades de forma nativa dentro de cmd.exe. Recomiendo encarecidamente hacer esto en powershell en lugar de cmd.
Respuesta2
Dominio:
echo "%DATE:~10,4%.%DATE:~7,2%.%DATE:~4,2%_%TIME:~0,2%.%TIME:~3,2%.%TIME:~6,2%.7z"
Producción:
"2012.27.05_22.11.58.7z"
Respuesta3
@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