批处理文件xcopy到一个部分未知的目录,其中包含一个点(。)

时间:2015-05-30 11:47:50

标签: batch-file xcopy

我试图创建一个将目录复制到另一个目录的批处理文件,但是,我希望复制的目录也有随机生成的名称的一部分,即" jibberish.Directory1"。 有没有办法做到这一点?

我正在尝试类似的事情:

XCOPY "%~dp0DATA\test" "%APPDATA%\Application1\Directory\*Directory1\" /E /C /R /I /K /Y 

但完全失败了。任何帮助将不胜感激:)谢谢!

1 个答案:

答案 0 :(得分:0)

xcopy 不支持目录名称中的通配符。因此,此任务还需要 for 循环,如下所示:

在文件夹C:\Temp中,批处理文件DuplicateFolder.bat包含以下代码。

要复制的文件夹是批处理文件目录中的DATA\test

C:\Temp\DATA\test包含:

  • SubFolder1
    • FirstFile.txt
    • Second File.txt
  • 子文件夹2
    • ListFile.csv
  • 的Readme.txt

所有这些子文件夹和文件都应该复制到%APPDATA%\Application1\Directory中的每个子文件夹中,并以点后面的数字结尾。

%APPDATA%\Application1\Directory包含例如:

  • 文件夹abc.1
  • 文件夹e-g.2
  • 文件夹h至k.3
  • 文件夹last.4
  • 文件夹未更改

最后一个文件夹应该被忽略,因为它在末尾不包含点和数字。

结果应该是例如第一个子文件夹Folder abc.1

  • 文件夹abc.1
    • SubFolder1
      • FirstFile.txt
      • Second File.txt
    • 子文件夹2
      • ListFile.csv
    • 的Readme.txt

DuplicateFolder.bat的代码是:

@echo off
set "SourceFolder=%~dp0DATA\test"
for /D %%F in ("%APPDATA%\Application1\Directory\*") do (
    if not "%%~xF" == "" %SystemRoot%\System32\xcopy.exe "%SourceFolder%" "%%~F" /E /C /Q /R /I /K /Y >nul
)
set "SourceFolder="

此批处理文件只检查文件夹名称是否包含点而不检查点后是否为字符串 - "文件扩展名"引用%%~xF - 实际上是一个数字。这个非常简单的测试非常快。

有关已使用命令 for 的详细信息以及参数和特殊循环变量引用的说明,请打开命令提示符窗口,执行for /?,并在控制台中读取此命令的帮助输出窗口。