2011-09-27 157 views
0

我在文件夹中的文件的数量,我需要做的就是将文件名重命名为不同的模式比如:TTFILE-201109265757.datYTL.MSZSH1.ch1.201109265757_0001.0001.dat通过批量重命名多个文件,VBScript或bash shell中

YTL, MSZSH1,CH1然后通过前缀的文件名遵循然后_然后序号

的文件名模式应该是这样的:YTL.MSZSH1.ch1.filename_SequenceNumber.SequenceNumber其中SequenceNumber是4位,复位为0后9999

+0

为什么'TTFILE-'不出现在新名称中? –

回答

1

这小bash脚本应该完成这项工作:)只需在参数列表中用相关文件调用它即可,或者用$(ls)替换[email protected]

#!/bin/bash                  
counter=1 
prefix="YTL.MSZSH1.ch1." 
for i in "[email protected]" ; do 
    file=$(basename "$i") 
    counter=$(printf "%04d" $counter) 
    mv "$i" "$prefix${file/TTFILE-/}_$counter.$counter.dat" 
    counter=$(($counter+1)) 
done 
1

在Windows环境中,这里是剧本我会跑:

@echo off 
setlocal EnableDelayedExpansion 
pushd %1 

set c=0 
for /r %%i in (%2-*.dat) do (
    set filename=%%~ni 
    set digits=!filename:%2-=! 
    ren "%%i" %3.%4.%5.!digits!_!c.!c!.dat 
    set /a c+=1 
    if !c! equ 10000 set c=0 
) 

popd 

要运行它:script.cmd "D:\Test Area" TTFILE YTL MSZSH1 ch1,其中D:\Test Area是包含.dat文件的目录和下面的参数为前缀使用。

如果D:\Test Area包含子目录,其中包含的.dat文件也将被重命名,但序列号不会在两个不同的子文件夹之间重置。