J'utilise la commande de date pour un script de lot.
Je me demande comment utiliser la commande
9 Réponses :
Chaque fois que vous entendez lot, pensez à Rob van der Woude. Quoi qu'il en soit, voici hier.bat . P>
regarder @ jrl's Répondre a> ... 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? P>
Vous pouvez appeler à PowerShell dans un fichier BAT, comme si: Utilisez BAT pour démarrer PowerShell Script p>
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. P>
bonne chance ... p>
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 !!
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> 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%
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 alors vous pouvez appeler la date d'hier comme variable avec hier.txt code>. Appelez-le ensuite la prochaine fois que le processus fonctionne. Fonctionne pour un processus que j'ai qui fonctionne une fois par jour seulement. P>
% yest% code>. p> p>
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%
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" i>? Avez-vous couru cela quand c'est le premier du mois?
J'ai trouvé que ce script fonctionne bien Les résultats ressembleraient à: p> script tiré de
1) strong> Voici un script appelé Vous pouvez l'utiliser comme p> hier.bat code>:
for /f %%a in ('powershell "[DateTime]::Today.AddDays(-1).ToString("""yyyyMMdd""")"') do set ystd=%%a
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%
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.
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
Dupliqué possible de Date Arithmétique dans CMD Scripting