常用代码

# Git 命令

## 查看纯提交信息日志

```bash
git log <tag1>..<tag2> --pretty="%s" --no-merges
```

其中 `<tag1>..<tag2>` 可以用于筛选日志,换成分支名称也一样。两个 `.` 不能省略。使用 `--pretty="- %s"` 可以直接生成 Markdown 格式的无序列表。

## 查看上一个tag到当前tag之间的日志

```bash
git log `git tag -l | sed -e '1{$q;}' -e '$!{h;d;}' -e x`..`git tag -l | sed -n '$p'` --pretty="%s" --no-merges
```

# ffmpeg 命令

## 嵌入字幕

```bash
ffmpeg -i <input> -vf scale=<width>:<height>,pad=<width>:<height>:<xpos>:<ypos>,subtitles=<ass> <output>
```

## FLAC转MP3

```bash
ffmpeg -i $flac_name -ab 320k -map_metadata 0 -id3v2_version 3 $mp3_name
```

# Imagemagick 命令

## 图片改300DPI

```bash
convert -units PixelsPerInch input.png -density 300 output.png
```

# 正则表达式

## 影视剧名排除特定版本

以匹配电影《沙丘》但排除HDR和杜比视界版本为例

```plaintext
^.*沙丘.*1080p.((?!HDR|DV).)*$
```

# GDAL

## Shapefile 和 PostGIS

Shapefile 导入 PostGIS

```bash
ogr2ogr.exe -f PostgreSQL PG:"host='' user='' password='' dbname=''" shapefile.shp -nln "table_name" -nlt MULTIPOLYGON -lco PRECISION=NO
```

PostGIS 导出 Shapefile

```bash
ogr2ogr.exe -f "ESRI Shapefile" shapefile.shp PG:"host='' user='' password='' dbname=''" "table_name"
```

# PowerShell

## 批量 Excel 转 csv

```bash
$ExcelWB = new-object -comobject excel.application
Get-ChildItem -Path c:\folder -Filter "*.xls" | ForEach-Object{
    $Workbook = $ExcelWB.Workbooks.Open($_.Fullname) 
    $newName = ($_.Fullname).Replace($_.Extension,".csv")
    $Workbook.SaveAs($newName,6)
    $Workbook.Close($false)
}

$ExcelWB.Quit()
```

## 批量音频FLAC格式转MP3

```powershell
Get-ChildItem *.flac | ForEach-Object {
  $flac_name='"{0}"' -f $_.FullName
  $mp3_name='"{0}.mp3"' -f $_.BaseName.Split(". ")[1]
  ffmpeg.exe -i $flac_name -ab 320k -map_metadata 0 -id3v2_version 3 $mp3_name
}
```