标题: [文件操作] (已解决)批处理怎么让指定符号中间的字母不作改动,其余字母全部大写?? [打印本页]
作者: ChenCheChe 时间: 2020-1-31 20:57 标题: (已解决)批处理怎么让指定符号中间的字母不作改动,其余字母全部大写??
本帖最后由 ChenCheChe 于 2020-4-3 20:01 编辑
我想让目录下的文件/文件夹(包含子文件夹)的全部文件和文件夹的名称全部改成大写,
但是在这个括号 [abcd] 内的字母不作改动。
比如文件或者文件夹名称 [abcd]efg123改成[abcd]EFG123
目录下的全部文件以及文件夹(包含子文件夹)都是这样更改。
应该怎么写法?麻烦大佬们了。
作者: flashercs 时间: 2020-1-31 22:46
本帖最后由 flashercs 于 2020-1-31 23:21 编辑
- <#*,:&cls
- @echo off
- pushd "%~dp0"
- powershell -NoProfile -ExecutionPolicy RemoteSigned -Command ". ([ScriptBlock]::Create((Get-Content -LiteralPath \"%~0\" -ReadCount 0 | Out-String ))) "
- popd
- pause
- exit /b
- #>
- # 我想让目录下的文件/文件夹(包含子文件夹)的全部文件和文件夹的名称全部改成大写,但是在这个括号 [abcd] 内的字母不作改动
- Get-ChildItem -Path . -Filter * -Recurse | ForEach-Object -Begin {
- $re = [regex]'(\[[^\[\]]+\])|[a-z]+'
- $evaluator = [System.Text.RegularExpressions.MatchEvaluator] {
- param($m)
- if ($m.Groups[1].Success) {
- return $m.Value
- } else {
- 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-1-31 23:02
回复 2# flashercs
谢谢大佬,运行成功
作者: ChenCheChe 时间: 2020-1-31 23:10
回复 2# flashercs
你好,这个代码把文件的扩展名都改成大写了,能不能让扩展名不作改动呀??
作者: flashercs 时间: 2020-1-31 23:21
回复 4# ChenCheChe
已修改
作者: ChenCheChe 时间: 2020-1-31 23:49
回复 5# flashercs
非常感谢
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |