找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24350|回复: 5

[文件操作] (已解决)批处理怎么让指定符号中间的字母不作改动,其余字母全部大写??

[复制链接]
发表于 2020-1-31 20:57:00 | 显示全部楼层 |阅读模式
本帖最后由 ChenCheChe 于 2020-4-3 20:01 编辑

我想让目录下的文件/文件夹(包含子文件夹)的全部文件和文件夹的名称全部改成大写,
但是在这个括号 [abcd] 内的字母不作改动。

比如文件或者文件夹名称 [abcd]efg123改成[abcd]EFG123
目录下的全部文件以及文件夹(包含子文件夹)都是这样更改。

应该怎么写法?麻烦大佬们了。
发表于 2020-1-31 22:46:06 | 显示全部楼层
本帖最后由 flashercs 于 2020-1-31 23:21 编辑
  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. # 我想让目录下的文件/文件夹(包含子文件夹)的全部文件和文件夹的名称全部改成大写,但是在这个括号 [abcd] 内的字母不作改动
  10. Get-ChildItem -Path . -Filter * -Recurse | ForEach-Object -Begin {
  11.   $re = [regex]'(\[[^\[\]]+\])|[a-z]+'
  12.   $evaluator = [System.Text.RegularExpressions.MatchEvaluator] {
  13.     param($m)
  14.     if ($m.Groups[1].Success) {
  15.       return $m.Value
  16.     } else {
  17.       return $m.Value.ToUpper()
  18.     }
  19.   }
  20. } -Process {
  21.   $newName = $re.Replace($_.BaseName, $evaluator)
  22.   if ($newName -cne $_.BaseName) {
  23.     # Rename-Item -Path ($_.FullName -replace '[\[\]]', '`$&') -NewName $newName
  24.     # $_.MoveTo($newName)
  25.     cmd.exe /c "ren `"$($_.FullName)`" `"$newName$($_.Extension)`""
  26.   }
  27. }
复制代码
 楼主| 发表于 2020-1-31 23:02:56 | 显示全部楼层
回复 2# flashercs


    谢谢大佬,运行成功
 楼主| 发表于 2020-1-31 23:10:16 | 显示全部楼层
回复 2# flashercs


    你好,这个代码把文件的扩展名都改成大写了,能不能让扩展名不作改动呀??
发表于 2020-1-31 23:21:53 | 显示全部楼层
回复 4# ChenCheChe


    已修改
 楼主| 发表于 2020-1-31 23:49:51 | 显示全部楼层
回复 5# flashercs


    非常感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 15:54 , Processed in 0.016704 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表