我目前正在尝试使用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
最后六位数字未保留,我不知道为什么。
答案 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_'))
可以使用正则表达式,但是如果您不熟悉上述方法,可能会过于复杂。