3

我有一个程序生成未知数量的具有整数扩展名的文件,如下所示。

在此处输入图像描述

我想附加.eps到每个。如何在 DOS 批处理文件中执行此操作?

我不能使用以下内容,因为我不知道搜索表达式。

for %%x in (Main.<what>) do rename "%%x" "%%x.eps"

注意:任何具有相同名称且具有非整数扩展名的文件都必须保持原样。

4

2 回答 2

3
setlocal EnableDelayedExpansion
for %%x in (Main.*) do (
    set ext=%%~Xx
    set /a num=!ext:~1!
    if !num! gtr 0 rename "%%x" "%%x.eps"
)

首先 SET 只获取文件名的扩展名,包括点(带 ~X)。第二个 SET /A 尝试将扩展名(不带 :~1 的点)转换为数字。如果它确实是一个数字(大于零),请重命名。

于 2011-07-30T03:08:42.710 回答
1

这应该遍历目录。以下是它如何工作的解释:

tokens = 1-2意味着我们只关心文件名的第一部分和第二部分。

delims =.表示分割.文件名中的标记。

dir /b表示仅列出文件,不显示命令中通常显示的任何.或。您需要将目录放在那里或从同一个文件目录运行。..dir

LSSachar将始终返回GREATER THAN,这就是它的工作原理。我选了9999,你随便选。

最后,它获取文件名的第一部分 ( %%A),然后是扩展名 ( %%B),然后重命名为文件名的第一部分 ( %%A) 并带有eps扩展名。

for /f "tokens=1-2 delims=." %%A in ('dir /b') do if %%B LSS 9999 rename %%A.%%B %%A.%%B.eps

把它放在你的批处理文件中并运行它。

注意:您不能重命名为相同的文件名,所以我使用%%A.%%B.eps.

于 2011-07-30T00:11:48.537 回答