3 votes

Windows batch, Paramètres régionaux différents, Renommer le répertoire YYYmmDD_HHmmSS

Date et heure sur 2 ordinateurs :

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

Au fur et à mesure que les paramètres régionaux changent,
quelle est la recommandation utilitaire et
lot à la commande de fichier
automatiser une sortie, dans un format standard de date et d'heure ?
( Renommer le répertoire R:\1 )

ren R:\1 R:\20171025_021459

R:\yyyyMMdd_HHmmss  
R:\20171025_021459

3voto

DavidPostill Points 140654

Comment puis-je obtenir un format de date et d'heure standard qui ignore les paramètres régionaux ?

Utilisez le fichier batch suivant (qui est la manière correcte d'analyser la sortie de l'heure locale à partir 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:\1 %_stamp%
endlocal

Autres lectures

  • Un index A-Z de la ligne de commande CMD de Windows - Une excellente référence pour tout ce qui concerne la ligne cmd de Windows.
  • pour /f - Commande en boucle contre les résultats d'une autre commande.
  • getdate - Affiche la date et l'heure indépendamment du système d'exploitation, de la langue ou du format de date choisi par l'utilisateur (Panneau de configuration/Régional).
  • variables - Extraire une partie d'une variable (sous-chaîne).
  • wmic - Commande Windows Management Instrumentation.

2voto

Squashman Points 316

C'est un moyen plus court de faire ce que vous voulez spécifiquement faire. Dans mon secteur d'activité, les accords de niveau de service sont primordiaux et la réduction du temps de traitement, aussi insignifiante soit-elle, est la méthode que j'utilise normalement.

@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:\1 %dt:~0,8%_%dt:~8,6%

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X