我运行一个小的批处理文件来重命名一些txt文件:
“ C:\ backup \ t1-dd-dd t2-dd-dd.txt”
在文件名d中-是一个数字(从0到9);
注意:文件名中t1和t2标记之间有空格(出于某些原因,我需要它)。
现在,我只需要在文件名的“ t1-dd-dd”部分替换数字。
使用powershell Rename-Item可以像这样完成(示例):
powershell -command "& { Get-ChildItem с:\backup -filter 't1-* t2-*.txt' | Rename-Item -NewName { $_.Name -replace 't1-\d\d-\d\d','t1-00-99' } }"
结果将如下所示:
C:\ backup \ t1-14-26 t2-56-48.txt(旧文件名)
C:\ backup \ t1-00-99 t2-56-48.txt(新文件名)
仅使用cmd RENAME命令就可以在没有powershell的情况下做同样的事情?
您不能使用正则表达式来做到这一点,但是可以使用RENAME通配符来做到这一点。
ren "c:\backup\t1-??-?? t2-??-??.txt" "???00-99*"
在目标掩码中,每个?
字符保留一个字符,而文字按一个字符替换一个字符,并*
保留其余字符。
请参阅Windows RENAME命令如何解释通配符?有关更多信息。
如果您担心源掩码不够具体,则可以使用以下批处理脚本来确保仅重命名正确的文件。
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脚本可能更容易:-)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句