【发布时间】:2020-09-23 07:29:08
【问题描述】:
围绕以下问题思考 - 也试图说明我试图实现的目标。
源包含名为“import”的子文件夹,其中包含文件和/或文件夹 - (仅)此“import”文件夹应以新的个人名称复制到目标目录,因为只能有一个同名文件夹当然。
.Source
├── FolderA
│ └── import
│ └── Attachment
│ └── log
│
├── FolderB
│ └── import
│ └── log
│
├── FolderC
│ └── import
│ └── Attachment
│ └── log
.
.Destination
├── import27526
│ └── Attachment
│
├── import96385
│
├── import52987
│ └── Attachment
我尝试在 CMD 中使用 FOR 和 xcopy 或 robocopy 解决这个问题,创建随机目标目录。
for /f "delims=" %%A in ('dir /a:d /b /s "import"') do (xcopy /y /i /S "%%A" "C:\temp\%%~nxA%random%")
不幸的是,它不起作用,因为来自各种“导入”源文件夹中的所有数据都被复制到单个目标目录而不是单个目标目录中。
非常感谢任何帮助!
【问题讨论】:
-
您发布的代码不是cmd 命令行,而是batch-file 命令行。请重新审视问题,调整代码和/或标签以匹配,谢谢。另外,正如您已经说过您不希望有两个同名目录,是什么让您认为
%RANDOM%永远不会输出与现有目录匹配的数字字符串?将它们命名为FolderA_import、FolderB_import、FolderC_import等会更有意义。 -
嗨!感谢您的澄清,我更改了标签。复制的文件夹将在几分钟内从目标目录中处理和删除,所以我认为相同随机值的机会非常小。但是,是的,我同意以您描述的模式命名文件夹确实很有意义。
-
你的代码片段的核心问题——除了随机数的可能重复——是随机数缺少delayed expansion...
标签: windows batch-file copy