2015-05-26 7 views
0

Как добавить «_05262015» в конец имени файла в PowerShell? Например, я открываю файл, записывая данные, а затем сохраняя его.Добавить mmDDyyyy в filename

#Opening 
$extractFile = @" 
\\C:\Test\book1.csv 
"@ 
#Saving 
$DataSet.Tables[0] | Export-Csv $extractFile -NoTypeInformation 
+0

Вы смотрели на 'Rename-Item' и' Get-date'? Возможно, вам нужна манипуляция строки с помощью '$ extractFile'? – Matt

+2

Часть, которую вы прокомментировали '# Открытие', не открывает файл. Он просто определяет переменную с именем файла (как многострочную строку). Откуда взялось имя файла? У вас есть это в своем коде (так что вы можете просто определить строку по-разному), или это происходит откуда-то еще (так что вам нужно изменить существующую строку)? –

ответ

1

I е вы хотите управлять существующей строки имени файла вы можете сделать это (например) с методами IO.Path класса:

$extractFile = 'C:\Test\book1.csv' 

$date = Get-Date -f 'MMddyyyy' 
$dirname = [IO.Path]::GetDirectoryName($extractFile) 
$filename = [IO.Path]::GetFileNameWithoutExtension($extractFile) + 
      "_$date" + [IO.Path]::GetExtension($extractFile) 

$extractFile = Join-Path $dirname $filename 
+0

Это сохраняет в моем текущем каталоге (где сценарий ps1) не в назначении, указанном в $ extractFile – MasterOfStupidQuestions

3

Вот так, что я делаю это:

$extractFile = '\\C:\Test\book1_{0}.csv' -F (Get-Date).ToString('MMddyyyy') 
+0

Могу ли я сохранить исходное имя файла на месте и сделать что-то вроде: $ savefilename = $ extractFile -Format (Get-Date) .ToString ('MMddyyyy') – MasterOfStupidQuestions

+0

@MasterOfStupidQuestions No. –

+0

Это не добавление даты в конец имя файла? – MasterOfStupidQuestions

-2
$newFileName = $extractFile + "_05262015" 
$DataSet.Tables[0] | Export-Csv $newFileName -NoTypeInformation 
+5

, хотя это технически отвечает на вопрос, поскольку его буквально спрашивали. Я чувствую, что OP действительно хотел добавить до расширения. – EBGreen

+1

Как правило, ответы гораздо полезнее, если они включают объяснение того, что должен делать код, и почему это решает проблему, не представляя других. (Это сообщение было помечено как минимум одним пользователем, по-видимому, потому, что они считали, что ответ без объяснений должен быть удален. Courtesy ping @ humble.rumble, который предположительно не был флагмером.) –

+0

Я проголосовал за это, потому что я не чувствую его на самом деле решает проблему, которую имеет OP. Я думал, что мой первый комментарий сделал это ясно. – EBGreen

2

$extractFile = '\\C:\Test\book1.csv' 
$suffix = Get-Date -Format '_MMddyyyy' 
$newFile = $extractFile -replace '\.([^.]*)$',"$suffix.`$1" 
Move-Item $extractFile -Destination $newFile 

Оператор -replace делает замену regular expression, и как это работает:

Елки т аргумент шаблон матч, который мы хотим заменить:

'\.([^.]*)$' 
^^^
    | | | 
Dot | | 
     | End of string 
    Capture group with 0 or more non-Dot characters (file extension) 

Второй аргумент является строкой, мы хотим, чтобы заменить подходящий шаблон с:

"$suffix.`$1" 
    ^ ^
    |  | 
    |  $1 refers to that first capture group from the match pattern, escaped to avoid string expansion 
    PowerShell parser expands this to "__05262015" because we use double-quotes 

Так значение $newFile становится \\C:\Test\book1_05262015.csv (по крайней мере, сегодня)

в прошлом мы используем Move-Item с полным новым путем эффективно переименовать файл

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