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

batch file xcopy to a partially unknown directory with a dot ( . ) in

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

我正在尝试类似的东西:

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

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

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

文件夹 C:\Temp 中有批处理文件 DuplicateFolder.bat,代码如下。

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

C:\Temp\DATA\test 包含:

  • 子文件夹 1
    • FirstFile.txt
    • 第二个File.txt
  • 子文件夹 2
    • ListFile.csv
  • Readme.txt

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

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

  • 文件夹 abc.1
  • 文件夹例如.2
  • 文件夹 h 到 k.3
  • 文件夹 last.4
  • 文件夹未更改

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

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

  • 文件夹 abc.1
    • 子文件夹 1
      • FirstFile.txt
      • 第二个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 引用的 "file extension" - 是否真的是一个数字。这个非常简单的测试非常快。

有关使用命令 for 的详细信息以及参数和特殊循环变量引用的解释打开命令提示符 window,执行 for /?,然后在控制台中读取此命令的帮助输出 window.