在日常办公的过程中,如果能够学会使用PowerShell可以帮我们高效率的做一些工作:
基础使用:
1、重命名
ren "旧文件名.txt" "新文件名.txt"
2、保留原文件名,给文件名加前缀
Get-ChildItem | Rename-Item -NewName { "prefix_" + $_.Name }
或者加有序号的名称:
$i=1; Get-ChildItem | Sort-Object Name | Rename-Item -NewName { "前缀-$($i; $i++)" + $_.Name }
3、批量替换文件名中的字符串
Get-ChildItem | Rename-Item -NewName { $_.Name -replace "old","new" }
4、删除文件名中的空格/替换为下划线
Get-ChildItem | Rename-Item -NewName { $_.Name -replace " ","_" }
办公使用:
1、获取当前文件夹的所有文件名(包含文件夹名)
Get-ChildItem | Select-Object -ExpandProperty Name
或简写:
(Get-ChildItem).Name
2、获取当前文件夹下的文件(不包含文件名)
Get-ChildItem -File | Select-Object -ExpandProperty Name
或:
Get-ChildItem | Where-Object { $_.PSIsContainer } | Select-Object -ExpandProperty Name
获取完整的文件路径:
Get-ChildItem | Select-Object -ExpandProperty FullName
3、获取指定的文件名
Get-ChildItem -Filter "*.txt" | Select-Object -ExpandProperty Name
4、批量给文件进行重命名
$i=1; Get-ChildItem -File | Rename-Item -NewName { "photo_$($i; $i++)" + $_.Name }
或者指定文件类型进行重命名:
Get-ChildItem -Filter "*.txt" | Rename-Item -NewName { "backup_" + $_.Name }
批量给图片进行重命名:
$i=1; Get-ChildItem -Filter "*.jpg" | Sort-Object Name | Rename-Item -NewName { "photo_$($i; $i++).jpg" }
4、批量修改文件的后缀
Get-ChildItem -Filter "*.jpeg" | Rename-Item -NewName { $_.BaseName + ".jpg" }
5、批量给文件进行批量按照序号重命名
$i=1; Get-ChildItem -File | Sort-Object Name | ForEach-Object {$extension = $_.Extension # 保留原扩展名Rename-Item -Path $_.FullName -NewName ("photo-{0:D3}$extension" -f $i) # 格式化为3位序号(如001)$i++ }
注意这里的语法:("photo-{0:D3}$extension" -f $i) 里面的 -f 是字符串格式化运算符,所以可以这样写,更直观:
$i=1; Get-ChildItem -File | Sort-Object Name | ForEach-Object {$extension = $_.Extension # 保留原扩展名Rename-Item -Path $_.FullName -NewName ("photo-"+$i+$extension) # 格式化为3位序号(如001)$i++ }
7、改名还可以这种写
Get-ChildItem -File | Rename-Item -NewName { $_.BaseName + '-001-' + $_.Extension }
打完收工!