2016-08-28 4 views
0

Я пытаюсь сделать следующие три шага с Powershell скрипт:Powershell: положить вчерашнюю дату в имя файла

  1. роняйте расширение файла (.part) всех файлов, заканчивающийся с шаблоном «* flv.part». Таким образом, файлы, заканчивающиеся на «.flv.part», теперь заканчиваются просто «.flv».

  2. Добавить вчерашнюю дату (в формате YYYYMMDD) в начале имени файла этих FLV-файлов.

  3. Переместить эти FLV-файлы в другой каталог.

Я выяснил первый и последний шаг. Но я не могу понять средний шаг (второй шаг, когда я добавляю вчерашнюю дату в начало имени файла).

Вот что я выяснил:

cd C:\Users\appa\Desktop 
Dir | Rename-Item -NewName { $_.name -replace ".part","" } 
---------this step needs to add yesterday's date (in YYYYMMDD format) to filename-------- 
move-item -path .\*.flv -destination d:\D:\VideoCaptures 

Любые идеи кто-нибудь? Я использую Windows 7 с powershell v2.

EDIT: Спасибо всем за ваш вклад! Я сделал следующий сценарий для выполнения этой задачи:

cd C:\Users\appa\Desktop 
$dt_str = (get-date).AddDays(-1).tostring("yyyyMMdd") 
Dir *.part | Rename-Item -NewName { $dt_str + "-" + $_.name -replace ".part","" } 
move-item -path .\*.flv -destination D:\VideoCapture 

EDIT: Это чисто для FYI целей ... Я уже до проголосовали полезные сообщения и ознаменовало пост как ответ, но говорит, что SU он не будет отражать мои голоса, пока я не получу 10 или что-то репутационное. Поэтому, пожалуйста, подождите, пока мои голоса не станут «видимыми»! :)

+0

'[DateTime] :: Today.AddDays (-1) .ToString ('YYyyMmDd')' – PetSerAl

+0

@PetSerAl Спасибо за команду! Но как я могу использовать его в начале имени файла при его переименовании? Я хочу, чтобы я сохранил остальную часть имени FLV при добавлении этой (вчерашней) даты в начале? Как мне структурировать команду -replace для этого? Было проще отключить расширение «.part», но я не могу понять, добавив это в начале. – SOuser

+0

@ beck2haml - Вы фактически заменяете часть имени файла на вчерашнюю дату или вы просто добавляете? – Enigmativity

ответ

2

Попробуйте это:

$date = Get-Date 
$date = $date.AddDays(-1) 
$dateStr = $date.ToString("yyyyMMdd") 
Dir | Rename-Item -NewName { $dateStr + $_.name -replace ".flv.part",".flv"} 
1

Читайте о Get-Date метод и Formatting Dates, пожалуйста.

Например, для текущей даты:

$dt = Get-Date -format 'yyyyMMdd'

или вчера

$dt = (Get-Date).AddDays(-1).ToString('yyyyMMdd')


Другие функции, которые вы можете использовать:


Может быть что-то вроде этого:

$dt = (Get-Date).AddDays(-1).ToString('yyyyMMdd') 

Get-Item -Path "C:\Windows\*.flv.part" | Foreach-Object -Process { 

    $newpath = Join-Path -Path $_.DirectoryName -ChildPath "$dt-$($_.BaseName).flv" # in PowerShell "" it's a Magic String 

    Move-Item -Path $newpath -Destination "??" 
} 


Обратите внимание, о PowerShell’s Type Conversion Magic в PowerShell;)

Смежные вопросы