Я никогда не использовал Powershell (или VBScript), так как я новичок в IT-Admin и был бы признателен за некоторые рекомендации по переименованию файлов.
Ежедневно я буду загружать файлы, использующие Filezilla, вручную из SFTP-соединения в локальный каталогизатор YYYYMMDD (хотя позже я захочу написать автоматизированное задание, которое будет формировать меня по расписанию). Я хотел бы настроить какую-то задачу, чтобы, когда файлы попадали в каталог distination, они переименовывались.
Для сегодняшней загрузки у меня есть следующие файлы, которые я хотел бы переименовать:
Original Name Renamed Filename
wcm14444.csv.11.10.20_09.32 wcm14444_111020_0932.csv
wcm14444.csv.11.10.21_00.09 wcm14444_111021_0009.csv
wcm14444.pdf.11.10.20_09.32 wcm14444_111020_0932.pdf
wcm14444.pdf.11.10.21_00.10 wcm14444_111021_0010.pdf
wcm1cash.csv.11.10.21_00.56 wcm1cash_111021_0056.csv
wcm1money.csv.11.10.21_00.56 wcm1money_111021_0056.csv
wcm1opnpos.csv.11.10.21_00.56 wcm1opnpos_111021_0056.csv
wcm1trades.csv.11.10.21_00.56 wcm1trades_111021_0056.csv
wcm1_an.pdf.11.10.21_03.26 wcm1_an_111021_0326.pdf
wcm1_ds.pdf.11.10.21_00.22 wcm1_ds_111021_0022.pdf
wcm1_ep.csv.11.10.21_03.26 wcm1_ep_111021_0326.csv
wcm1_ms.pdf.11.10.21_03.26 wcm1_ms_111021_0326.pdf
Вы заметите в моем требовании переименования:
1. Расширение файла появляется в середине имени файла и помещается в конец.
2. Я заменяю "." с "", где они появляются как разделители даты. Если это поможет, я ожидаю только получения типов файлов (".csv", ".pdf", ".xls"), и там, где они появляются в имени файла, они заменяются на "_".
В настоящее время я бы использовал Excel для выполнения этой задачи, но это кажется довольно сложным для развертывания в качестве системной задачи? Это кажется более сложной задачей для Powershell.
Если я создаю папки ГГГГММДД, например, N: \ SFTP \ Provider1 \ ГГГГММДД, каким будет наилучший способ автоматизации переименования файлов, когда файлы загружаются в ГГГГМД каждого дня (учитывая, что в те же дни может не быть папкой, созданной, потому что нет новых файлов).
Большое спасибо и всего наилучшего,
Берти.
Спасибо всем за помощь. Больше для тех, кто спотыкается на этой странице. Теперь я создал файл Rename_SFTP.ps1 в N: \ SFTP \ Provider1 \, содержащий
$pattern = '^([^\.]+)\.(csv|xls|pdf)\.(\d{2})\.(\d{2})\.(\d{2})_(\d{2})\.(\d{2})'
$todayDate = Get-Date -Format "yyyyMMdd"
Get-ChildItem (".\" + $todayDate + "\") -Recurse | Foreach-Object{
if($_.Name -match $pattern)
{
echo $NewName
$NewName = "{0}_{1}{2}{3}_{4}{5}.{6}" -f $matches[1],$matches[3],$matches[4],$matches[5],$matches[6],$matches[7],$matches[2]
Rename-Item (".\" + $todayDate + "\" + $_) -NewName $NewName
}
}
Затем я создал RunRenameTaskForToday.bat, содержащий
powershell .\Rename_SFTP.ps1
По крайней мере, таким образом, когда я загружаю файлы вручную, все, что мне нужно сделать, - это дважды щелкнуть по файлу .bat на уровень выше, и он покажет нужную папку, в которую необходимо переименовать файлы. Все, что мне нужно сделать, это найти способ автономно загружать SFTP-файлы ...
Спасибо всем.