标题: [文件操作] (已解决)怎么把文件夹名的每个单词首字母都大写? [打印本页]
作者: itunesis 时间: 2020-2-3 23:13 标题: (已解决)怎么把文件夹名的每个单词首字母都大写?
本帖最后由 itunesis 于 2020-2-5 19:40 编辑
大家好!
我想让现在的文件名中的单词每个首字母变成大写,单词是按空格或者 - 号作为分隔的。
这个bat能搞得定吗?
作者: flashercs 时间: 2020-2-4 20:06
- <#*,:&cls
- @echo off
- pushd "%~dp0"
- powershell -NoProfile -ExecutionPolicy RemoteSigned -Command ". ([ScriptBlock]::Create((Get-Content -LiteralPath \"%~0\" -ReadCount 0 | Out-String ))) "
- popd
- pause
- exit /b
- #>
- # 我想让目录下的文件/文件夹(包含子文件夹)的全部文件和文件夹的名称全部改成 首字母大写单词-Capital Word
- Get-ChildItem -Path . -Filter * -Recurse | ForEach-Object -Begin {
- $re = [regex]'(?i)[a-z]+'
- $evaluator = [System.Text.RegularExpressions.MatchEvaluator] {
- param($m)
- $s = $m.Value.ToLower()
- return $s.Substring(0, 1).ToUpper() + $s.Substring(1)
- }
- } -Process {
- $newName = $re.Replace($_.BaseName, $evaluator)
- if ($newName -cne $_.BaseName) {
- # Rename-Item -Path ($_.FullName -replace '[\[\]]', '`$&') -NewName $newName
- # $_.MoveTo($newName)
- cmd.exe /c "ren `"$($_.FullName)`" `"$newName$($_.Extension)`""
- }
- }
复制代码
作者: itunesis 时间: 2020-2-4 20:48
回复 2# flashercs
谢谢了,成功了
作者: itunesis 时间: 2020-2-4 22:54
回复 2# flashercs
老哥,用了几次发现有几个问题。
原来单词如果是大写的,运行后其他大写字母会换成小写,
首字母大写的单词没有完全以空格符号或者-号符号来识别的。
我想只把空格 符号或者-号符号这两个字符后面单词的首字母变成大写
比如单词abc123abc 首字母大写格式应该是Abc123abc
单词abc123-abc 首字母大写格式应该是Abc123-Abc
如果一串字母中没有空格符号或者-符号那就当作是一个单词,
比如单词you're 首字母大写格式应该是You're而不是You'Re
如果原来单词首字母就是大写的,就保持这个单词不变,不作改动。
比如原单词是ABC,首字母不需要更改了,那就保持单词ABC不改动
这样描述不知道老哥能不能看的明白,简单说就是每个单词首字母大写,
每个单词都是用空格符号或者-符号间隔开的,只有这两个符号后面的单词首字母才需要大写。
附上图片给老哥看看。
作者: flashercs 时间: 2020-2-4 23:12
回复 4# itunesis - <#*,:&cls
- @echo off
- pushd "%~dp0"
- powershell -NoProfile -ExecutionPolicy RemoteSigned -Command ". ([ScriptBlock]::Create((Get-Content -LiteralPath \"%~0\" -ReadCount 0 | Out-String ))) "
- popd
- pause
- exit /b
- #>
- # 我想让目录下的文件/文件夹(包含子文件夹)的全部文件和文件夹的名称全部改成 首字母大写单词-Capital Word
- Get-ChildItem -Path . -Filter * -Recurse | ForEach-Object -Begin {
- $re = [regex]'(?<=[- ]|^)[a-z]'
- $evaluator = [System.Text.RegularExpressions.MatchEvaluator] {
- param($m)
- return $m.Value.ToUpper()
- }
- } -Process {
- $newName = $re.Replace($_.BaseName, $evaluator)
- if ($newName -cne $_.BaseName) {
- # Rename-Item -Path ($_.FullName -replace '[\[\]]', '`$&') -NewName $newName
- # $_.MoveTo($newName)
- cmd.exe /c "ren `"$($_.FullName)`" `"$newName$($_.Extension)`""
- }
- }
复制代码
作者: ChenCheChe 时间: 2020-2-5 00:01
回复 5# flashercs
真厉害
作者: lxh623 时间: 2020-2-5 07:54
批量修改文件名工具(BulkRenameUtility)v2.7.1.3绿色中文版
这个好像也可以做到。大小写有四个选择:大写、小写、标题、句子。
作者: itunesis 时间: 2020-2-5 19:40
回复 5# flashercs
谢谢
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |