Batch file 将dos/批处理中的字符串添加到文件名

Batch file 将dos/批处理中的字符串添加到文件名,batch-file,dos,Batch File,Dos,对于这个小问题,我在这里或网上都没有找到任何答案,我也不知道该怎么做 假设您在windows/DOS下有以下文件: filename.ext 您希望将此文件复制到同一目录中。副本应具有以下名称: filename.AA.ext 如何使用批处理文件(.bat)实现这一点 谢谢你的帮助 增编: 事实上,如果这样的东西能同时适用于任何扩展名的文件,这就是我想要的目标结果: 复印件(星号)。(星号)AA(星号) 此外,我很乐意将具有不同扩展名的文件(比如1个pdf和1个exe)放在一起,并将它们拖到批处

对于这个小问题,我在这里或网上都没有找到任何答案,我也不知道该怎么做

假设您在windows/DOS下有以下文件: filename.ext

您希望将此文件复制到同一目录中。副本应具有以下名称: filename.AA.ext

如何使用批处理文件(.bat)实现这一点

谢谢你的帮助

增编: 事实上,如果这样的东西能同时适用于任何扩展名的文件,这就是我想要的目标结果:

复印件(星号)。(星号)AA(星号)


此外,我很乐意将具有不同扩展名的文件(比如1个pdf和1个exe)放在一起,并将它们拖到批处理文件上,以便将它们重命名到与其中的“.AA”相同的目录中。

我将从以下内容开始:

mkdir \tmpdir
copy filename.ext \tmpdir
mov \tmpdir\filename.ext filename.AA.ext
对于可以处理多个文件的内容

mkdir \tmpdir
copy *.ext \tmpdir
mov \tmpdir\*.ext *.AA.ext

COPY命令使用与RENAME相同的通配符规则-请参阅

不需要批量生产。您当然可以将该命令放在批处理文件中,但这不是必需的

copy filename.ext *.AA.ext
复制多个文件的步骤

copy *.ext *.AA.ext

下面的批处理文件通过从资源管理器拖放到其中的所有文件实现了您想要的过程

@echo off
:nextFile
   if "%~1" equ "" goto exitLoop
   copy "%~1" "%~DPN1.AA%~X1"
   shift
   goto nextFile
:exitLoop
安东尼奥

解决了

在安东尼奥的解答的帮助下,我回答了自己的问题。要在代码中添加路径并在同一目录中获取复制的文件,请按照以下步骤完成Antonio的代码:

@echo off
:nextFile
   set filepath=%~dp1
   if "%~1" equ "" goto exitLoop
   copy "%~1" "%filepath%%~N1.AA%~X1"
   shift
   goto nextFile
:exitLoop
现在,您可以拖放多个文件,每个文件具有不同的文件扩展名,它们将被复制到同一目录中


谢谢大家的帮助

这将使tmpdir落后,而且比必要的复杂得多。感谢您的及时回复。它适用于一个文件,但第二个版本不适用于多个文件。显然最后一行不被接受,所以dos提示。谢谢你的快速回复。这个简单的行非常强大,对于给定的文件类型很好。如果不是一个文件类型(例如“.ext”),而是一个“.pdf”和“.exe”(分别在“.AA.pdf”和“.AA.exe”中重命名),您知道一个变体吗?我尝试对您的代码进行修改,但dos cmd不接受多个扩展名。抱歉,它现在可以正常工作:-/。如果我将pdf和exe拖放到要用AA重命名的“.bat”文件上会怎么样?dos命令不接受这一点。代码现在是(但不能使用拖放):copy*.pdf*.AA.pdf copy*.exe*.AA.exe非常感谢。这与拖放和几个具有不同扩展名的文件一起工作。只有一点:AA文件复制到C:\Documents and Settings\%my path%目录中,而不是原始文件所在的目录中。有什么想法吗?@johnsmith:只需在文件名中的N修饰符之前插入一个D和P字母:
复制“%~1”“%~DPN1.AA%~X1”
。我已经在上面的代码中这样做了…请注意,您的解决方案将所有文件复制到第一个文件的目录中。下面我的解决方案是将每个文件复制到自己的目录中,这样您就可以在同一个拖放操作中混合来自不同文件夹的文件…是的,这就是我想要的:整个操作将在给定的目录中进行。