Board logo

标题: [文件操作] 批处理怎么把文件/文件夹名称中的数字之间的.号给替换成-号? [打印本页]

作者: itunesis    时间: 2020-2-5 19:45     标题: 批处理怎么把文件/文件夹名称中的数字之间的.号给替换成-号?

只把数字之间的.号替换成-号,字母中间.号不作替换。

还有文件扩展名的.号不能替换。

比如把文件/文件夹名称A.B.C 12.13.14改成A.B.C 12-13-14

这个该怎么写?
作者: flashercs    时间: 2020-2-5 22:08

  1. <#*,:&cls
  2. @echo off
  3. pushd "%~dp0"
  4. powershell -NoProfile -ExecutionPolicy RemoteSigned -Command ". ([ScriptBlock]::Create((Get-Content -LiteralPath \"%~0\" -ReadCount 0 | Out-String ))) "
  5. popd
  6. pause
  7. exit /b
  8. #>
  9. # 我想让目录下的文件/文件夹(包含子文件夹)的全部文件和文件夹的名称 数字之间的.号给替换成-号
  10. Get-ChildItem -Path . -Filter * -Recurse | ForEach-Object -Begin {
  11.   $re = [regex]'(?<=\d)\.+(?=\d)'
  12. } -Process {
  13.   $newName = $re.Replace($_.BaseName, '-')
  14.   if ($newName -cne $_.BaseName) {
  15.     # Rename-Item -Path ($_.FullName -replace '[\[\]]', '`$&') -NewName $newName -Verbose
  16.     # $_.MoveTo($newName)
  17.     cmd.exe /c "ren `"$($_.FullName)`" `"$newName$($_.Extension)`""
  18.   }
  19. }
复制代码

作者: itunesis    时间: 2020-2-5 23:01

回复 2# flashercs


   老哥,这个代码运行后
   文件名更改后正常的,变成 A.B.C 12-13-14
   但是文件夹的名字变成了    A.B.C 12-13-14.14 (后面多了一个.14)
   如果是一个代码同时更改文件和文件夹名不好实现,写成两个代码一个修改文件名的,一个修改文件夹名也行。我运行两次就可以了。
  麻烦您了
作者: flashercs    时间: 2020-2-5 23:59

回复 3# itunesis
  1. <#*,:&cls
  2. @echo off
  3. pushd "%~dp0"
  4. powershell -NoProfile -ExecutionPolicy RemoteSigned -Command ". ([ScriptBlock]::Create((Get-Content -LiteralPath \"%~0\" -ReadCount 0 | Out-String ))) "
  5. popd
  6. pause
  7. exit /b
  8. #>
  9. # 我想让目录下的文件/文件夹(包含子文件夹)的全部文件和文件夹的名称 数字之间的.号给替换成-号
  10. Get-ChildItem -Path . -Filter * -Recurse | ForEach-Object -Begin {
  11.   $re = [regex]'(?<=\d)\.+(?=\d)'
  12. } -Process {
  13.   $baseName = $_.PSChildName.Substring(0, $_.PSChildName.Length - $_.Extension.Length)
  14.   $newName = $re.Replace($baseName, '-')
  15.   if ($newName -cne $_.BaseName) {
  16.     # Rename-Item -Path ($_.FullName -replace '[\[\]]', '`$&') -NewName $newName -Verbose
  17.     # $_.MoveTo($newName)
  18.     cmd.exe /c "ren `"$($_.FullName)`" `"$newName$($_.Extension)`""
  19.   }
  20. }
复制代码

作者: itunesis    时间: 2020-2-6 20:40

回复 4# flashercs


    大神这次运行后文件夹名称从A.B.C 12.13.14 变成了A.B.C 12-13.14 (最后一个.号没有更改成功)
   大神,如果同时更改不好写,就写一个处理文件的就可以了.




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2