PowerShell 如何批量去除文件前缀
powershell吧
全部回复
仅看楼主
level 1
s896161120
楼主
请问该怎么写脚本去除这些文件前面_*_的前缀呢?
eg: _96b3a08c72f4de18d0c35211ae01dc9d_Summing-up-week-4.pdf 重命名为 : Summing-up-week-4.pdf
2016年02月19日 06点02分
1
level 2
残月独照
这个是需要所有的文件都在同一个文件夹下面,而且移除了所有的下划线之前的前缀,其他的自己弄呗,只是一个例子
$Folder = "D:\Tools"
$Files = Get-ChildItem -Path $Folder
Foreach ( $File in $Files )
{
If ( $File -match ".*_(.*)" )
{
Echo $Matches[0]
Move-Item -Path $File.FullName -Destination ($Folder+ "\" + $Matches[1])
}
}
2016年03月08日 08点03分
3
level 2
MooserLee
很明显这是某个程序在上传文件时,为了保证文件的唯一性,在前边追加了一个GUID。刚好32位。
所以可以用正在表达式 匹配前面一个下划线,中间32个0-9或者a-z的字符,紧跟一个下划线。
但是这里有个问题需要考虑,在重命名时可能会出现相同名称的错误,所以在重命名之前,最好先检测是否有存在,如果存在,在则 文件名+1,如果继续存在,则 文件名+2
[regex]::Replace('_96b3a08c72f4de18d0c35211ae01dc9d_Summing-up-week-4.pdf','_[0-9-a-z]{32}_','')
2016年03月11日 15点03分
4
s896161120
多谢~~
2016年03月15日 05点03分
1