批处理文件,复制以(A、B、C、D、E)开头的文件

批处理文件,复制以(A、B、C、D、E)开头的文件

有没有办法定义要复制的文件数组,而不是运行 xcopy 6 次?

xcopy \\\from_location\\(A,B,C,D,E)*.txt \\\to_location\

答案1

不只是使用 XCOPY。但是一个简单的 FOR 语句可以提供帮助:

for %A in (A B C D E) do xcopy "fromPath\%A*.txt"  "toPath"

答案2

我不确定是否有任何本地方法可以做到这一点,但你可以看到发布有关 GUI 和命令行工具的信息,该工具包含了几乎所有可以想象的使用模式重命名文件的方法。

如果您使用此工具的命令行版本并将其添加到您的PATH,您应该能够从批处理文件中使用它。

答案3

MaQleod 的链接提供了一个 Powershell 答案,但如果您对批处理脚本答案感兴趣,这里有一种方法可以做到:

@echo off
set __fileset.1=a*.txt
set __fileset.2=b*.txt
set __fileset.3=c*.txt
set __fileset.4=d*.txt
set __fileset.5=e*.txt

for /f "tokens=2* delims=.=" %%g in ('SET __fileset.') do call :CopySet "%%h"
goto :exit

:CopySet
echo xcopy "%~dpxn1" "\to_location\." /v
goto :eof

:exit

通过使用__fileset.环境变量,您将在批处理文件中创建一个伪数组。然后使用循环for遍历所有可用值,并调用子命令CopySet执行实际的复制命令。当然,脚本可以得到增强,但这只是如何执行此操作的一个示例。

确保批处理脚本的最后一行为空,因为命令使用该行为goto :eof结束子脚本并返回到先前调用的行。

相关内容