标题: [文件操作] 批处理命令findstr的正则表达式如何修改符合条件的文件名? [打印本页]
作者: mimixi666 时间: 2014-4-7 17:51 标题: 批处理命令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,
可以实现吗??
作者: terse 时间: 2014-4-7 18:58
没测试- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /s /b /a-d * *你好*.*') do (
- set str=%%~nxi
- ren "%%i" "!str:你好=hello!"
- )
- pause
复制代码
作者: mimixi666 时间: 2014-4-8 17:25
没测试
terse 发表于 2014-4-7 18:58
能不能用一条命令来实现??
dos命令里面有正则表达式吗??
能不能用一条正则表达式来实现的??
作者: terse 时间: 2014-4-8 17:38
一条命令P估计难
作者: DAIC 时间: 2014-4-8 18:57
回复 3# mimixi666
不能
有
不能
作者: CrLf 时间: 2014-4-8 21:48
http://bbs.bathome.net/viewthread.php?tid=13231
http://bbs.bathome.net/viewthread.php?tid=13342
作者: terse 时间: 2014-4-8 23:42
win7 话 PS可试- Function MoveTofile ($PH,$str1,$str2) {
- Get-ChildItem -Path "$PH" -Include *$str1*.txt -recurse |
- Where-Object {!$_.PSIsContainer} |
- % {
- $_.MoveTo($_.DirectoryName + "\" + [RegEx]::Replace($_.name,"$str1", "$str2"))
- }
- }
- MoveTofile "C:\Test" "你好" "hello"
复制代码
作者: CrLf 时间: 2014-4-9 00:29
回复 7# terse
可以用 ren,不知下面两种是否等价:- ls -recurse *.jpg | %{ren $_ { $_.name -replace "\.jpg",".txt"}
复制代码
- ls -recurse *.jpg | ren -newname { $_.name -replace "\.jpg",".txt"}
复制代码
作者: terse 时间: 2014-4-9 00:44
回复 8# CrLf
对POWERSHELL 的许多方法不是很熟 只是练手 见笑
另好像 REN 对特殊字符有感冒的
看了 REN 的说明- -------------------------- 示例 4 --------------------------
-
- C:\PS>get-childItem *.txt | rename-item -newname { $_.name -replace '\.txt','.log' }
-
-
- 说明
- -----------
- 此示例说明如何使用替换运算符重命名多个文件,即使 NewName 参数不接受通配符也是如此。
-
- 此命令将当前目录中的所有 .txt 文件重命名为 .log。
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |