[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

比如我目录下有,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,

可以实现吗??

没测试
  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
复制代码

TOP

没测试
terse 发表于 2014-4-7 18:58

能不能用一条命令来实现??
dos命令里面有正则表达式吗??
能不能用一条正则表达式来实现的??

TOP

一条命令P估计难

TOP

回复 3# mimixi666


不能

不能

TOP

TOP

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"
复制代码

TOP

回复 7# terse


    可以用 ren,不知下面两种是否等价:
  1. ls -recurse *.jpg | %{ren $_ { $_.name -replace "\.jpg",".txt"}
复制代码
  1. ls -recurse *.jpg | ren -newname { $_.name -replace "\.jpg",".txt"}
复制代码

TOP

回复 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。
复制代码

TOP

返回列表