制作一个批处理文件,每月(使用Windows的任务调度程序)存档Google Chrome下载文件夹(在我的Windows 7 64位PC上)。 它应该将文件从某些文件类型移动到另一个文件夹,如果它上个月没有被修改过。文件应移动到的文件夹取决于上次修改日期。
所以我创建了以下批处理文件:
@ECHO OFF CD C:\Users\Dagan\Downloads FORFILES /m (DIR (FOR %%G IN (*.doc *.pdf) do echo %%G) /A /O:D /T:C /B /D) /c "FOR %Q IN (@path) DO ((SET year=%%~tG ) && (SET year=%year~6,4%) && (SET month=%%~tG) && (SET month=%month~3,2%) && (MOVE %%G "C:\Users\Dagan\DownloadArchives\"%year%"\"%month%"\") && (SET year=) && (SET month=))" /d -31 CD C:\Users\Dagan\Desktop
但它不起作用,我收到以下错误:
The following usage of the path operator in batch-parameter substitution is invalid: %~tG ) && (SET year=%year~6,4%) && (SET month=% %~tG) && (SET month=%month~3,2%) && (MOVE %%G "C:\Users\Dagan\DownloadArchives\"% year%"\"%month%"\") && (SET year=) && (SET month=))" /d -31 For valid formats type CALL /? or FOR /? ☺ is not expected at this point.
有人可以帮帮我吗?
PS:这是我的批处理文件,但现在格式化以便更好地阅读:
@ECHO OFF CD C:\Users\Dagan\Downloads FORFILES /m ( DIR ( FOR %%G IN ( *.doc *.pdf ) do echo %%G ) /A /O:D /T:C /B /D ) /c " FOR %Q IN (@path) DO ( (SET year=%%~tG ) && (SET year=%year~6,4%) && (SET month=%%~tG) && (SET month=%month~3,2%) && (MOVE %%G "C:\Users\Dagan\DownloadArchives\"%year%"\"%month%"\") && (SET year=) && (SET month=) ) " /d -31 CD C:\Users\Dagan\Desktop
答案 0 :(得分:0)
我认为' @'在你的路径变量是问题。我不认为CMD扩展了Perl数组语法中的路径。