Windows batch, Configuração regional diferente, Renomear diretório YYYYmmDD_HHmmSS

3

Data e hora em dois computadores:

10/25/2017 3:36:05 a.m. __ on Windows 7  
2017-10-25 03:07:23 ______ on Windows XP  

Como as configurações regionais mudam,
qual é o programa recomendado utilitário e o comando lote para automatizar uma saída, para um formato padrão de data / hora? < br> (Renomeie o diretório R: \ 1)

ren R: R:171025_021459
R:\yyyyMMdd_HHmmss  
R:171025_021459  
    
por Joseph 25.10.2017 / 10:33

2 respostas

2

Como posso obter um formato de data e hora padrão que ignore as configurações regionais?

Use o seguinte arquivo de lote (que é a maneira correta de analisar a saída de hora local de wmic ):

@echo off
setlocal
rem use findstr to strip blank lines from wmic output
for /f "usebackq skip=1 tokens=1-6" %%g in ('wmic Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year ^| findstr /r /v "^$"') do (
  set _day=00%%g
  set _hours=00%%h
  set _minutes=00%%i
  set _month=00%%j
  set _seconds=00%%k
  set _year=%%l
  )
rem pad with leading zeros
set _month=%_month:~-2%
set _day=%_day:~-2%
set _hh=%_hours:~-2%
set _mm=%_minutes:~-2%
set _ss=%_seconds:~-2%
rem use YYYYmmDD_HHmmSS format for the timestamp
set _stamp=%_year%%_month%%_day%_%_hh%%_mm%%_ss%
ren R: %_stamp%
endlocal

Leitura adicional

  • Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
  • para / f - Comando Loop contra os resultados de outro comando.
  • getdate - Exibe a data e a hora independentemente da localidade do SO, idioma ou o formato de data escolhido pelos usuários (Painel de Controle / Regional ).
  • variáveis - Extrai parte de uma variável (substring).
  • wmic - Comando de instrumentação de gerenciamento do Windows.
por 25.10.2017 / 17:31
2

Esta é uma forma mais curta de fazer o que você deseja especificamente. Na minha linha de trabalho, os Acordos de Nível de Serviço são excelentes e reduzir qualquer quantidade de tempo de processamento, independentemente de quão trivial seja, é o que usarei normalmente.

@echo off
REM Get date and time in YYYYMMDDhhmmss format
for /f "tokens=2 delims==." %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
rem put underscore in the middle of date and time stamp
ren R: %dt:~0,8%_%dt:~8,6%
    
por 13.12.2017 / 03:25