使用文件中的字符串重命名文件



我有一个名为psgl_extract.txt的文件,我想用文件中的字符串重命名。
字符串AURNTRNA20170509V141位于文件的第一行。
批处理文件和目标文件将位于同一目录中,d:\abc

从文件中提取:

00AURNTRNA20170509V141
01RNET           201705090010020030000  7158254                                               562009    AUD-00000000000000000000000.020                                                                                   200300009502015 03955711000283
01RNET           201705090010020030000  2347394

期望输出:

AURNTRNA.20170509.V141.txt

重命名一个文件似乎有很多工作!你能不能打开它复制第一行关闭它并使用编辑过的粘贴重命名。

也就是说,这里有一些解决方案,使用有关您提供的结构的假设信息:

@Echo Off
If Not Exist "D:abcpsgl_extract.txt" GoTo :EOF
Set/P "_S="<"D:abcpsgl_extract.txt"
For /F "Tokens=1 Delims=0123456789" %%A In ("%_S%") Do (Set "_A=%%A"
    For /F "Tokens=*" %%B In ('Call Echo^=%%_S:*%%A^=%%') Do Set "_N=%%B")
Ren "D:abcpsgl_extract.txt" "%_A%.%_N:~,8%.%_N:~8%.txt"

如果同一目录中有多个.txt文件,则所有文件都具有相同的假定结构,则可以使用它:

@Echo Off
SetLocal EnableDelayedExpansion
For %%A In (*.txt) Do (
    Set/P "_S="<"%%A"
    For /F "Tokens=1 Delims=0123456789" %%B In ("!_S!") Do (Set "_A=%%B"
        For /F "Tokens=*" %%C In ('Echo^=!_S:*%%B^=!') Do Set "_N=%%C")
    Ren "%%A" "!_A!.!_N:~,8!.!_N:~8!%%~xA")

最新更新