1

毎月 (Windows のタスク スケジューラを使用して) Google Chrome Downloads フォルダー (私の Windows 7 64 ビット PC) にアーカイブするバッチ ファイルを作成しました。先月変更されていない場合、特定のファイルタイプから別のフォルダーにファイルを移動する必要があります。ファイルの移動先のフォルダーは、最終更新日によって異なります。

だから私は次のバッチファイルを作りました:

@エコーオフ
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\"%
年%"\"%月%"\") && (セット年=) && (セット月=))" /d -31


有効な形式の場合は、CALL /? と入力します。またはFOR /?
☺ 現時点では期待されていません。

誰かがこれで私を助けてくれますか?

PS: これも私のバッチファイルですが、読みやすいようにフォーマットされています。

@エコーオフ
CD C:\Users\Dagan\Downloads
FORFILES /m (
  DIR (
    FOR %%G IN (
      *.doc *.pdf
    ) %%G をエコーする
  ) /A /O:D /T:C /B /D
) /c "
  FOR %Q IN (@パス) 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 年 =) && (SET 月 =)
  )
" /d -31
CD C:\Users\Dagan\Desktop
4

1 に答える 1

0

パス変数の「@」が問題だと思います。そのPerl配列構文でCMDがパスを展開するとは思いません。

于 2012-10-24T17:15:48.873 に答える