2009-12-23 11 views

Respuesta

128

Puede insertar código de secuencia de comandos PowerShell arbitraria en una cadena entre comillas dobles mediante el uso de una subexpresión, por ejemplo, $(), así:

"C:\temp\mybackup $(get-date -f yyyy-MM-dd).zip" 

Y si usted está recibiendo el camino de alguna parte lo demás - ya como una cadena:

$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" 

Y si el camino pasa a estar llegando desde la salida del Get-ChildItem:

Get-ChildItem *.zip | Foreach { 
    "$($_.DirectoryName)\$($_.BaseName) $(get-date -f yyyy-MM-dd)$($_.extension)"} 
+4

Argh. 'get-date -f yyyy-MM-dd' me hizo detenerme por un momento antes de darme cuenta de que * no * es el operador' -f' *, sino la forma abreviada del parámetro '-Format' * *. Parecía bastante fuera de lugar, de alguna manera :-) – Joey

+0

Gracias Keith que fue de gran ayuda –

+1

y si quiero el tiempo también? –

9

Aquí hay algunos códigos de PowerShell que deberían funcionar. Puede combinar la mayor parte de este en menos líneas, pero quería mantenerlo claro y legible.

[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; 
+0

Gracias Tom, eso también fue de gran ayuda –

7

Necesitaba exportar nuestro registro de seguridad y quería la fecha y la hora en Tiempo Universal Coordinado. Esto resultó ser un reto de averiguar, pero tan fácil de ejecutar:

wevtutil export-log security c:\users\%username%\SECURITYEVENTLOG-%computername%-$(((get-date).ToUniversalTime()).ToString("yyyyMMddThhmmssZ")).evtx 

El código mágico es sólo esta parte:

$(((get-date).ToUniversalTime()).ToString("yyyyMMddThhmmssZ")) 
1

Uso:

$filenameFormat = "mybackup.zip" + " " + (Get-Date -Format "yyyy-MM-dd") 
Rename-Item -Path "C:\temp\mybackup.zip" -NewName $filenameFormat 
1

Gracias por la guión arriba Una pequeña modificación para agregar en el archivo que finaliza correctamente. Pruebe esto ...

$filenameFormat = "MyFileName" + " " + (Get-Date -Format "yyyy-MM-dd") **+ ".txt"** 

Rename-Item -Path "C:\temp\MyFileName.txt" -NewName $filenameFormat 
Cuestiones relacionadas