2014-01-13 119 views
0

我运行一个小批处理文件重命名一些txt文件:
“C:\ backup \ t1-dd-dd t2-dd-dd .TXT”cmd:替换文件名的内部部分(使用正则表达式掩码)

在文件名 d

- 是一个数字(0至9);
注意:t1和t2标记之间的文件名有空格(由于某种原因,我需要它)。

现在,我只需要在文件名的't1-dd-dd'部分替换数字。

使用PowerShell重命名,项目也可以像这样(例如)来完成:

powershell -command "& { Get-ChildItem с:\backup -filter 't1-* t2-*.txt' | Rename-Item -NewName { $_.Name -replace 't1-\d\d-\d\d','t1-00-99' } }" 

结果会是这样:
C:\备份\ t1-14-26 t2-56-48。 TXT(旧名)
C:\备份\ t1-00-99 t2-56-48.txt(新的文件名)

是有可能做同样的事情,而不PowerShell中,仅仅使用CMD RENAME命令?

+0

不重命名不支持正则表达式。 – Vache

回答

3

你不能用正则表达式做,但你可以用RENAME通配符来完成。

ren "c:\backup\t1-??-?? t2-??-??.txt" "???00-99*" 

内的目标面具,每个?保留一个字符,文字做了一对一字符替换,而*保留剩余部分。

请参阅How does the Windows RENAME command interpret wildcards?了解更多信息。

如果您担心源代码掩码不够详细,那么您可以使用以下批处理脚本来保证只更名为正确命名的文件。

pushd "c:\backup" 
for /f "delims=" %%F in (
    'dir /b /a-d "t1-??-?? t2-??-??.txt" ^| findstr /xirc:"t1-[0-9][0-9]-[0-9][0-9] t2-[0-9][0-9]-[0-9][0-9].txt"' 
) do ren "%%F" "???00-99*" 
popd 

但你的PowerShell脚本是可能更容易:-)

+0

谢谢。对于我的特殊情况'ren'c:\ backup \ t1 - ?? - ?? t2 - ?? - ??。txt“”??? 00-99 *“'就够了,似乎是更优雅的解决方案。 – escudero380

相关问题