使用批处理文件将文本添加到文件名末尾(但在扩展名之前)


18

我有一个左侧格式的文件列表。我想在每个文件名后附加一个字符串,但扩展名之前,如下所示:

File 1.txt  ->  File 1 version 1.txt
File 2.txt  ->  File 2 version 1.txt
File 3.txt  ->  File 3 version 1.txt
File 4.txt  ->  File 4 version 1.txt
...

在每种情况下,所有文件的附加字符串都是相同的。

这似乎是一个简单的任务,但是将其放入批处理文件时遇到了一些麻烦。

我已经试过了ren命令,并遵循一些这些示例此页面,但生成的文件名添加的字符串延:

File 1.txt version 1.txt

您的SS64“此页面”链接上的信息来自以下SU问答(以我的祝福):Windows RENAME命令如何解释通配符?当我发现新功能时,我会(很少)维护SU答案。
dbenham

Answers:


6

对于更长的文件名,您将不得不?在块中添加更多的?????????

ren *.?* ????????????????????????????????????????????????????????" version 1".*

2
感谢您如此迅速的回答!我稍微修改了命令,以保留文件扩展名,并且仅影响txt文件:ren * .txt ????????????????????????????“版本1.txt“
TheTurkey 2013年

如果我想在开头添加一些内容,该
怎么办

多少 ?需要字符吗?
Kaveesh Kanwal

39

为什么不依靠ren的无证古怪的东西,为什么不采用正确的方法呢?

for %a in (*.txt) do ren "%~a" "%~na version 1%~xa"

如果要在批处理文件中使用它,只需记住将每个%符号加倍。


1
优秀!任何时候这都是一个更好的答案。+1
Fr0zenFyr 2014年

2

我想将“ _A”添加到多个文件,这就是我的方法。

我先删除了扩展名,添加了后缀,然后将扩展名改回原来的。它肯定对我有用,并且使批处理代码保持简单,因为我不是一个程序员。

@ECHO OFF

REN *.pdf *.
REN *. *_A.
REN *. *.pdf

2

对于不熟悉命令的人(例如我),有一些使批量重命名非常容易的软件:

  • 批量重命名实用程序(无开源)
  • 重命名!(开源)

1

@bwDraco的解决方案很好,但是可以简化一些。我的所有文件都是* .jpg,我想将它们全部重命名为* c.jpg。为此,您只需要2个步骤,而不是3个步骤:

ren "{filepath}\*.jpg" *.
ren "{filepath}\*" *c.jpg

0

通过子文件夹递归

#!/bin/bash
# Warning: globstar excludes hidden directories.
# Turn on recursive globbing (in this script) or exit if the option is not supported:
shopt -s globstar || exit
for f in **
do
if [ -f "$f" ]; then
   extn=${f##*.} # save the extension of the file
   #mv "$f" "${f%.*}"_suffix.${extn};
   mv "$f" "${f%.*} version 1".${extn};
fi
done
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.