批处理 - 批处理参数替换中路径运算符的以下用法无效 - 存档Google Chrome下载文件夹

时间:2012-04-24 17:25:15

标签: batch-file

制作一个批处理文件,每月(使用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

1 个答案:

答案 0 :(得分:0)

我认为' @'在你的路径变量是问题。我不认为CMD扩展了Perl数组语法中的路径。