有没有办法定义要复制的文件数组,而不是运行 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
结束子脚本并返回到先前调用的行。