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

[文件操作] 批处理命令findstr的正则表达式如何修改符合条件的文件名?

[复制链接]
发表于 2014-4-7 17:51:56 | 显示全部楼层 |阅读模式
比如我目录下有,A B C D目录;
A B C D中都有子目录,它们的子目录里面都有
a你好.txt,b你好.txt,c你好.txt,d你好.txt,
你好a.txt,你好b.txt,你好c.txt,你好d.txt,
还有其它包含"你好"字符串的文件名,
我想把所有的文件名有"你好"的改成*"hello"*,这样的,该怎么实现??
比如,
a你好.txt,就用这条命令改成ahello.txt,
你好a.txt,就用这条命令改成helloa.txt,

可以实现吗??
发表于 2014-4-7 18:58:18 | 显示全部楼层
没测试
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir /s /b /a-d * *你好*.*') do (
  3.     set str=%%~nxi
  4.     ren "%%i" "!str:你好=hello!"
  5. )
  6. pause
复制代码
 楼主| 发表于 2014-4-8 17:25:47 | 显示全部楼层
没测试
terse 发表于 2014-4-7 18:58

能不能用一条命令来实现??
dos命令里面有正则表达式吗??
能不能用一条正则表达式来实现的??
发表于 2014-4-8 17:38:02 | 显示全部楼层
一条命令P估计难
发表于 2014-4-8 18:57:17 | 显示全部楼层
回复 3# mimixi666


不能

不能
发表于 2014-4-8 21:48:57 | 显示全部楼层
发表于 2014-4-8 23:42:06 | 显示全部楼层
win7 话 PS可试

  1. Function MoveTofile ($PH,$str1,$str2) {
  2.    Get-ChildItem  -Path "$PH" -Include *$str1*.txt -recurse |
  3.    Where-Object {!$_.PSIsContainer} |
  4.    % {
  5.        $_.MoveTo($_.DirectoryName + "" + [RegEx]::Replace($_.name,"$str1", "$str2"))
  6.      }
  7. }
  8. MoveTofile "C:\Test" "你好" "hello"


复制代码
发表于 2014-4-9 00:29:36 | 显示全部楼层
回复 7# terse


    可以用 ren,不知下面两种是否等价:
  1. ls -recurse *.jpg | %{ren $_ { $_.name -replace "\.jpg",".txt"}
复制代码
  1. ls -recurse *.jpg | ren -newname { $_.name -replace "\.jpg",".txt"}
复制代码
发表于 2014-4-9 00:44:00 | 显示全部楼层
回复 8# CrLf
对POWERSHELL 的许多方法不是很熟 只是练手 见笑
另好像 REN 对特殊字符有感冒的
看了 REN 的说明
  1. -------------------------- 示例 4 --------------------------

  2. C:\PS>get-childItem *.txt | rename-item -newname { $_.name -replace '\.txt','.log' }


  3. 说明
  4. -----------
  5. 此示例说明如何使用替换运算符重命名多个文件,即使 NewName 参数不接受通配符也是如此。

  6. 此命令将当前目录中的所有 .txt 文件重命名为 .log。
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 04:10 , Processed in 0.032858 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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