1

A 制作了一个批处理文件以每月存档(使用 Windows 中的任务计划程序)Google Chrome 下载文件夹(在我的 Windows 7 64 位电脑上)。如果上个月没有修改,它应该将文件从某些文件类型移动到另一个文件夹。文件应移动到的文件夹取决于上次修改日期。

所以我制作了以下批处理文件:

@ECHO 关闭
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

但它不起作用,我收到以下错误:

批量参数替换中路径运算符的以下用法无效: %~tG ) && (SET year=%year~6,4%) && (SET month=%
%~tG) && (SET month=%month~3,2%) && (MOVE %%G "C:\Users\Dagan\DownloadArchives\"%
年%"\"%月%"\") && (SET 年=) && (SET 月=))" /d -31


对于有效格式类型 CALL /? 或为/?
☺ 在这一点上不是预期的。

有人可以帮我吗?

PS:这是我的批处理文件,但现在格式化以便更好地阅读:

@ECHO 关闭
CD C:\Users\Dagan\Downloads
外形 /m (
  目录 (
    对于 %%G IN (
      *.doc *.pdf
    ) 回显 %%G
  ) /A /O:D /T:C /B /D
) /C ”
  FOR %Q IN (@path) DO (
    (SET 年=%%~tG) && (SET 年=%year~6,4%) && (SET 月=%%~tG) && (SET 月=%month~3,2%) &&
    (MOVE %%G "C:\Users\Dagan\DownloadArchives\"%year%"\"%month%"\") &&
    (SET 年=) && (SET 月=)
  )
" /d -31
CD C:\Users\Dagan\Desktop
4

1 回答 1

0

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

于 2012-10-24T17:15:48.873 回答