J'ai un chemin dans une chaîne,
"C:\temp\mybackup.zip"
Je voudrais insérer un horodatage dans ce script, par exemple,
"C:\temp\mybackup 2009-12-23.zip"
Existe-t-il un moyen simple de le faire dans PowerShell?
J'ai un chemin dans une chaîne,
"C:\temp\mybackup.zip"
Je voudrais insérer un horodatage dans ce script, par exemple,
"C:\temp\mybackup 2009-12-23.zip"
Existe-t-il un moyen simple de le faire dans PowerShell?
Réponses:
Vous pouvez insérer du code de script PowerShell arbitraire dans une chaîne entre guillemets en utilisant une sous-expression, par exemple, $ () comme ceci:
"C:\temp\mybackup $(get-date -f yyyy-MM-dd).zip"
Et si vous obtenez le chemin ailleurs - déjà sous forme de chaîne:
$dirName = [io.path]::GetDirectoryName($path)
$filename = [io.path]::GetFileNameWithoutExtension($path)
$ext = [io.path]::GetExtension($path)
$newPath = "$dirName\$filename $(get-date -f yyyy-MM-dd)$ext"
Et si le chemin provient de la sortie de Get-ChildItem :
Get-ChildItem *.zip | Foreach {
"$($_.DirectoryName)\$($_.BaseName) $(get-date -f yyyy-MM-dd)$($_.extension)"}
Voici un code PowerShell qui devrait fonctionner. Vous pouvez combiner la plupart de cela en moins de lignes, mais je voulais que ce soit clair et lisible.
[string]$filePath = "C:\tempFile.zip";
[string]$directory = [System.IO.Path]::GetDirectoryName($filePath);
[string]$strippedFileName = [System.IO.Path]::GetFileNameWithoutExtension($filePath);
[string]$extension = [System.IO.Path]::GetExtension($filePath);
[string]$newFileName = $strippedFileName + [DateTime]::Now.ToString("yyyyMMdd-HHmmss") + $extension;
[string]$newFilePath = [System.IO.Path]::Combine($directory, $newFileName);
Move-Item -LiteralPath $filePath -Destination $newFilePath;
J'avais besoin d'exporter notre journal de sécurité et je voulais la date et l'heure en temps universel coordonné. Cela s'est avéré être un défi à comprendre, mais si simple à exécuter:
wevtutil export-log security c:\users\%username%\SECURITYEVENTLOG-%computername%-$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ")).evtx
Le code magique est juste cette partie:
$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ"))
hh
est de 12 heures, sans tt
ce n'est pas utile. L'utilisation HH
vous donnera 24 heures. Je recommanderais l'un hhmmsstt
ou l' autre ouHHmmss
hh
pour HH
ci-dessus. Je pense que c'est ce que la plupart des gens voudront.
Merci pour le script ci-dessus. Une petite modification à ajouter dans le fichier se terminant correctement. Essaye ça ...
$filenameFormat = "MyFileName" + " " + (Get-Date -Format "yyyy-MM-dd") **+ ".txt"**
Rename-Item -Path "C:\temp\MyFileName.txt" -NewName $filenameFormat
Utilisation:
$filenameFormat = "mybackup.zip" + " " + (Get-Date -Format "yyyy-MM-dd")
Rename-Item -Path "C:\temp\mybackup.zip" -NewName $filenameFormat
$filenameFormat = "mybackup $(Get-Date -Format "yyyy-MM-dd").zip"
puisque cela correspond au format OP
get-date -f yyyy-MM-dd
m'a fait m'arrêter un instant avant de réaliser que ce n'est pas l'-f
opérateur mais la forme abrégée du-Format
paramètre . Cela avait l'air plutôt hors de propos, d'une manière ou d'une autre :-)