我试图创建一个将目录复制到另一个目录的批处理文件,但是,我希望复制的目录也有随机生成的名称的一部分,即" jibberish.Directory1"。 有没有办法做到这一点?
我正在尝试类似的事情:
XCOPY "%~dp0DATA\test" "%APPDATA%\Application1\Directory\*Directory1\" /E /C /R /I /K /Y
但完全失败了。任何帮助将不胜感激:)谢谢!
答案 0 :(得分:0)
xcopy 不支持目录名称中的通配符。因此,此任务还需要 for 循环,如下所示:
在文件夹C:\Temp
中,批处理文件DuplicateFolder.bat
包含以下代码。
要复制的文件夹是批处理文件目录中的DATA\test
。
C:\Temp\DATA\test
包含:
所有这些子文件夹和文件都应该复制到%APPDATA%\Application1\Directory
中的每个子文件夹中,并以点后面的数字结尾。
%APPDATA%\Application1\Directory
包含例如:
最后一个文件夹应该被忽略,因为它在末尾不包含点和数字。
结果应该是例如第一个子文件夹Folder abc.1
:
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 /?
,并在控制台中读取此命令的帮助输出窗口。