首页 > 解决方案 > 取文件名的一部分,复制到文件中

问题描述

我正在寻找一种(批量)解决方案将文件名的一部分复制到文本文件中。所有文件(数千个)都在一个目录中,修改后的文件应该转到另一个目录(比如说 c:\tmp )。

这些文件被称为:

0001_Songtitle1.txt
0002_Songtitle2.txt
0003_Songtitle3.txt

前导数字始终是 4 位数字,以 a 结尾_,而 Songtitle 可以有不同的长度。我希望将数字(前四位)复制到每个文件的第一行,格式如下:

(对于第一个文件)SongID:0001

(对于第二个文件)SongID:0002

(对于第三个文件)SongID:0003

有人有想法吗?

我试过这段代码:

@echo off
for %%I in (*.txt) do (
    echo %%~nI>"%TEMP%\FileName.tmp"
    echo/>>"%TEMP%\FileName.tmp"
    copy /B "%TEMP%\FileName.tmp" + "%%~I" "%%~I.tmp">nul
    del "%%~I"
    ren "%%~I.tmp" "%%~nxI"
)
del "%TEMP%\FileName.tmp" 2>nul

它将完整的文件名(不带 .txt)发送到第一行。但我很难只提取前四位数字。

谢谢,拉尔夫

标签: batch-file

解决方案


这是我要插入的地方:

@echo off
for %%I in (????_*.txt) do (
  for /f "tokens=1 delims=_" %%J in ("%%~nxI") do (
    >"temp.tmp" echo SongID:%%J
    >>"temp.tmp" echo/
    copy /B "temp.tmp" + "%%~I" "%%~I.tmp">nul
    move /y "%%~I.tmp" "%%~nxI" >nul
  )
)
del "temp.tmp" 2>nul

为了可读性和小的改进,我自由地稍微更改了您的代码。


推荐阅读