大家好:)我有以下问题要解决。 :我需要在运行后始终刷新文件中自动复制文件夹。我想每周一次(例如每个星期三)这样做,我需要将文件复制到名称是当前日期的文件夹中。我的想法如下:使用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
非常感谢你的帮助:)
答案 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命令中的问题,谢谢:)