使用Windows REN将文本插入文件名,并保持名称的其余部分?

时间:2018-11-14 17:29:40

标签: windows batch-file cmd rename

我目前正在尝试使用REN命令在文件名中间添加文本,同时保留其余文件名。

示例:

testfile_2018-11-14-06-06-23.pdf-> testfile_ABCD_2018-11-14-06-06-23.pdf

最后六位数字可能会发生变化,因此我需要使用通配符来表示它们。

当前,我有以下内容:

REN testfile_2018-11-14*.pdf testfile_ABCD_2018-11-14*.pdf

结果是: testfile_ABCD_2018-11-146-23.pdf

最后六位数字未保留,我不知道为什么。

2 个答案:

答案 0 :(得分:3)

请确保使用简单的REN命令无法完成此操作。但是,您可以使用FOR /F命令的功能来操纵文件名。

在命令提示符下,您可以运行它。

for /f "tokens=1* delims=_" %G IN ('dir /a-d /b "testfile_2018-11-14*.pdf"') do ren "%G_%H" "%G_ABCD_%H"

这将找到文件,然后用下划线将文件名分开。然后使用新文件名中的多余字符串将其重命名。

如果要在批处理文件中运行它,则必须将百分比符号加倍。

答案 1 :(得分:2)

如果我们要为REN提供替代解决方案,则可以在PowerShell中使用以下几种方法:

字符串拆分:

## Get a System.IO.FileInfo object to the file
$f = Get-Item path-to-the-testfile

## Split up the name by the underscore so the zeroth entry is 'testfile' and the first entry is the remaining name
$s = $f.Name.Split("_")

## Use String tokenization to recombine the different parts in the desired order during the rename
Rename-Item $f.FullName ("{0}\{1}_{2}_{3}" -f $f.DirectoryName, $s[0], 'ABCD', $s[1])

字符串替换:

## Get a System.IO.FileInfo object to the file
$f = Get-Item path-to-the-testfile

## Use string replace to fix the name during the rename operation
Rename-Item $f.FullName ($f.FullName.Replace('testfile_', 'testfile_ABCD_'))

可以使用正则表达式,但是如果您不熟悉上述方法,可能会过于复杂。