用于查找名为“Main”的文件的 DOS 搜索模式表达式是什么?有任何整数扩展吗?

发布于 2024-11-26 23:08:14 字数 313 浏览 3 评论 0原文

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

在此处输入图像描述

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

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

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

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

I have a program that generated unknown numbers of files with integer extension as follows.

enter image description here

I want to append .eps to each. How to do this in a DOS batch file?

I cannot use the following because I don't know the search expression.

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

Note: Any files having the same name with non-integer extension must be left as is.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

深海蓝天 2024-12-03 23:08:14
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 的点)转换为数字。如果它确实是一个数字(大于零),请重命名。

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

First SET get just the extension of file name, including the dot (with ~X). Second SET /A try to convert the extension (without the dot with :~1) to number. If it is really a number (greater than zero) do the rename.

烧了回忆取暖 2024-12-03 23:08:14

这应该循环遍历目录。以下是其工作原理的解释:

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

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

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

LSS 一个 char 将始终返回GREATER THAN,这就是它的工作原理。我选了9999,你可以选什么。

最后,它采用文件名的第一部分 (%%A) 和扩展名 (%%B),然后重命名为文件名的第一部分 (< code>%%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

This should loop through the directory. Here is the explanation on how it works:

tokens = 1-2 means we only care about the first and second part of the file name.

delims = . means to split the tokens on the . in the file name.

dir /b means to only list the files, don't show any of the . or .. that is normally shown in the dir command. You need to put the directory in there or run from the same file directory.

LSS a char will always return GREATER THAN, that's how this works. I picked 9999, you can pick whatever.

Finally, it takes the first part of the file name (%%A) and then the extension (%%B) then renames to first part of the file name (%%A) with the eps extension.

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

Put this in your batch file and run it.

Note: You can't rename to the same filename, so I used %%A.%%B.eps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文