批处理文件夹自动复制

时间:2016-11-25 19:37:48

标签: batch-file

大家好:)我有以下问题要解决。 :我需要在运行后始终刷新文件中自动复制文件夹。我想每周一次(例如每个星期三)这样做,我需要将文件复制到名称是当前日期的文件夹中。我的想法如下:使用copy命令创建批处理文件,并创建文件夹并将其带入任务计划程序。

批处理文件代码:

d:
cd testfolder
SET datefolder="%date%
mkdir %datefolder%
xcopy "d:\folder\from copy" "d:\folder\to copy" /E /H /C /R /Q /Y

此代码将生成一个包含当前日期的文件夹。 (2016. 11. 25)有空格。

问题是我不知道如何在路径中添加更改文件夹名称。

这样的事情(这不起作用!)

xcopy "d:\folder\from copy" "d:\folder\to copy\%datefolder%" /E /H /C /R /Q /Y

非常感谢你的帮助:)

3 个答案:

答案 0 :(得分:0)

SET "datefolder=%date%"
mkdir "%datefolder%"
xcopy "d:\folder\from copy" "d:\folder\to copy\%datefolder%\" /E /H /C /R /Q /Y

`set" var = value"语法可防止不需要的尾随空格包含在分配的值中。存储的值不包含引号。通过这种方式,可以控制报价。

答案 1 :(得分:0)

我看到了几个问题。您没有指定所获得的错误消息,但由于set命令中的单引号,它看起来就像是这样。你把它放在你的xcopy命令中,然后你有一个带3个引号的参数(一个不匹配)并且不起作用。

您可以简单地将%date%放入xcopy命令;没有理由将其设置为%datefolder%。除此之外,您将根据日期格式创建子文件夹。对我来说,echo %date%给出了" ddd MM / dd / yyyy"这意味着我最终得到了一个dd子文件夹和另一个子文件夹yyyy。它适用于xcopy命令,但它并不完全符合您的要求。

如果这还不够好,您必须以两种方式之一创建日期文件夹格式。您可以解析%date%并使用子字符串提取(请参阅help set)或令牌(请参阅help for),或者您可以进行PowerShell调用。

示例1:

for /f "tokens=1-4 delims=/ " %%a in ("%date%") do set datefolder=%%d. %%b. %%c

示例2:

for /f "delims=" %%a in ('"powershell [DateTime]::Now.ToString('yyyy. MM. dd')"') do set datefolder=%%a

编辑:您还希望使用\终止目标文件夹,以便xcopy知道它是一个目录。

答案 2 :(得分:0)

感谢您的快速答案:)

是的,这是正确的,这个版本不起作用:

SET "datefolder=%date%"
mkdir "%datefolder%"
xcopy "d:\folder\from copy" "d:\folder\to copy\%datefolder%\" /E /H /C /R /Q /Y

但这有效:

echo
d:
cd testfolder
SET datefolder="%date%"
mkdir %datefolder%

xcopy d:\folder\from copy d:\folder\to copy\%datefolder% /E /H /C /R /Q /Y

我需要在变量中指定日期,其他方式对我不起作用。 (创建3个带有年月和日的文件夹)完成所有" "标志是xcopy命令中的问题,谢谢:)