7
votes

Comment obtenir et afficher la date d'hier?

J'utilise la commande de date pour un script de lot.
Je me demande comment utiliser la commande date pour obtenir la date d'hier.


1 commentaires

9 Réponses :


6
votes

Chaque fois que vous entendez lot, pensez à Rob van der Woude. Quoi qu'il en soit, voici hier.bat .


0 commentaires

4
votes

regarder @ jrl's Répondre ... Si c'est vraiment si difficile, utilisez peut-être PowerShell et ensuite faire de la même manière que Date d'accès de Powershell: Comment obtenir hier à 22h00 dans une variable?

Vous pouvez appeler à PowerShell dans un fichier BAT, comme si: Utilisez BAT pour démarrer PowerShell Script

Vous vous retrouverez avec une solution de trois ou quatre doublures plutôt que de 100 ou tellement écrites (impectilément, j'ajouterai) par Rob van der Woude.

bonne chance ...


2 commentaires

0 Je lis cela, ce qui peut m'aider à formater une chaîne TechEt.microsoft.com /en-us/library/ee692801.aspx Mais si je vais obtenir hier date et formater la chaîne, comment utiliser cela correctement? (Date d'obtention) .Addays (-1) et Get-Day -Format YyyymMdd, donc je reçois la date d'hier au format yyyymmdd?


désolé je l'ai trouvé $ a = (get-date) .Adddays (-1); Date $ A -Format Yyyymmdd Merci, très bon Soltuibm Reddog !!



11
votes

Le danger principal avec la variable de date est la sensibilité locale. Si vous avez PowerShell disponible (il est beaucoup plus commun ces jours-ci, même dans les grandes entreprises), vous pouvez utiliser PowerShell pour effectuer le formatage et l'envelopper dans un lot pour la déclaration.

La ligne PowerShell suivante fera les mathématiques et le format La date pour vous: - p> xxx pré>

Vous pouvez ensuite exécuter ceci via pour l'obtenir dans une variable de fichier de commandes (mémoriser pour échapper à un tas de caractères entier avec le symbole HAT ^ et à l'aide de la backtick pour éviter les citations embarquées): - P>

for /f "usebackq" %%i in (`PowerShell $date ^= Get-Date^; $date ^= $date.AddDays^(-1^)^; $date.ToString^('yyyy-MM-dd'^)`) do set YESTERDAY=%%i echo %YESTERDAY%


0 commentaires

3
votes

Il y a un moyen beaucoup moins cher de le faire, exclusivement en lot. Je connais son rugueux, mais cela a fonctionné pour moi.

Écris essentiellement la date d'hier dans un fichier texte comme hier.txt . Appelez-le ensuite la prochaine fois que le processus fonctionne. Fonctionne pour un processus que j'ai qui fonctionne une fois par jour seulement. xxx

alors vous pouvez appeler la date d'hier comme variable avec % yest% .


0 commentaires

1
votes

J'ai accompli la date d'hier comme suit.

set m=%date:~-7,2%
set /A m -= 1
set DATE_DIR=%date:~-10,2%-%m%-%date:~-4,4%


2 commentaires

Je suppose que je parlais trop tôt que j'ai besoin d'ajouter quelques lignes pour gérer le premier du mois


@SnickBrack Comment cela peut-il "le faire pour vous" ? Avez-vous couru cela quand c'est le premier du mois?



2
votes

J'ai trouvé que ce script fonctionne bien xxx

Les résultats ressembleraient à: xxx

script tiré de http://www.powercram.com/2010/07/ Obtenez-Yesterdays-Date-in-MS-Dos-Batch.html


0 commentaires

1
votes

1) strong> Voici un script appelé hier.bat code>: xxx pré>

Vous pouvez l'utiliser comme p>

    for /f %%a in ('powershell "[DateTime]::Today.AddDays(-1).ToString("""yyyyMMdd""")"') do set ystd=%%a


0 commentaires

-4
votes

Le moyen le plus simple d'obtenir la date d'hier (yyyymmdd) en lot est la suivante:

set D=%date:~-10,2%
set /A D -= 1
echo %date:~-4,4%%date:~-7,2%%D%


1 commentaires

Qu'est-ce qui vous fait penser que le format de date est la même dans tous les systèmes? Ne remarque également jamais ce qui se passe au 1er mois? 1 - 1 n'est pas le 30ème.



1
votes

Créez simplement un fichier de commandes et ajoutez ceci:

@echo off
set day=-1
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2)
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a"
del "%temp%\%~n0.vbs"
set "YYYY=%result:~0,4%"
set "MM=%result:~4,2%"
set "DD=%result:~6,2%"
set "result=%yyyy%-%mm%-%dd%"
REM Below Will echo full date including year, month and yesterday's date.
echo %result%
REM Below line will echo yesterday's date (Day only).
echo %DD%
pause


0 commentaires