【问题标题】:Rename file with a string within the file用文件中的字符串重命名文件
【发布时间】:2017-10-11 04:20:32
【问题描述】:

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

从文件中提取:

00AURNTRNA20170509V141

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

期望的输出:

AURNTRNA.20170509.V141.txt

【问题讨论】:

  • 第一行是否只包含字符串,仅此而已?您只需要从第一行获取字符串,因此可以安全地假设第一行将始终只包含您希望文件名成为的字符串,仅此而已,对吗?
  • 感谢您的回复。那是正确的:)

标签: file batch-file rename


【解决方案1】:

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

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

@Echo Off
If Not Exist "D:\abc\psgl_extract.txt" GoTo :EOF
Set/P "_S="<"D:\abc\psgl_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:\abc\psgl_extract.txt" "%_A%.%_N:~,8%.%_N:~8%.txt"

如果同一目录中有多个 .txt 文件 all 具有相同的假定结构,那么您可以使用这个:

@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")

【讨论】:

    猜你喜欢
    • 2014-02-13
    • 2011-12-27
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 2013-12-18
    • 2016-11-10
    • 2015-04-04
    • 2022-09-25
    相关资源
    最近更新 更多