0

我想将 ddmmyy 附加到文件名,复制文件并移动到特定位置。到目前为止,这就是我所拥有的,我无法让修改日期正常工作。

原始代码:

@Echo Off
@For /F "tokens=1,2,3,4 delims=/ " %%A in ('Date /t') do @( 
Set Day=%%A
Set Month=%%B
Set Year=%%C
Set Year=%%D
Set All=%%A%%B%%C%%D
)
@For %%a in ("*.txt") do copy %%a "import\%%~na_%All%.csv"

我尝试了以下方法:

@For %%a in ("*.txt") do copy %%a,,+ "import\%%~na_%All%.csv"

@For %%a in ("*.txt") do copy %%a "import\%%~na_%All%.csv,,+"

@For %%a in ("*.txt") do copy %%a "import\%%~na_%All%.csv",,+

文件名正确复制并附加了日期,但是我无法正确更新修改日期。

4

1 回答 1

0

复制文件不会修改“最后修改”日期。您需要触摸文件。阅读此 SO 问题https://stackoverflow.com/questions/51435/windows-version-of-the-unix-touch-command并尝试

copy %%a +,,
copy %%a "import\%%~na_%All%.csv"

除此之外,我可以给你一些改进建议。

  • 您可以只使用%DATE%环境变量而不是复制/解析DATE命令的输出。

    如果格式%DATE%不符合您的要求,请查看此 SO 答案https://stackoverflow.com/a/11183896/30447

  • 如果您想移动文件(如您在问题中所述),您可以使用MOVE而不是。COPY

    @echo off
    for %%a in (*.txt) do (
      copy "%%a" +,,
      move "%%a" "import\%%~na_%DATE%.csv"
    )
    
于 2013-08-30T15:24:47.327 回答