2016-11-25 179 views
1

大家好:)我有以下问题需要解决。 :我需要在运行始终刷新后自动在文件中复制文件夹。我想每周都做一次(例如每周三),我需要将文件复制到名称为当前日期的文件夹中。我的想法如下:使用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
SET "datefolder=%date%" 
mkdir "%datefolder%" 
xcopy "d:\folder\from copy" "d:\folder\to copy\%datefolder%\" /E /H /C /R /Q /Y 

的`设置 “VAR =价值” 语法防止不必要的尾部空格被包含在分配的值中。存储的值不会包含引号。通过这种方式,可以控制报价。

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知道这是一个目录来终止您的目标文件夹。

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命令中的问题谢谢:)

相关问题