批处理文件 - 日期变量和具有可变日期文件名的移动文件从一个文件夹到另一个文件夹

时间:2013-08-09 21:43:04

标签: variables batch-file file-io wildcard

我需要一些帮助。我正在尝试创建批处理文件以将文件从一个文件夹移动到另一个文件夹。文件名将具有可变的yyyy-mm格式以及日期之前或之后的其他数据。批处理需要将文件移动到具有相同mmmm-yy文件夹名称的服务器目录。

我已经提出了下面的代码,但它并不常用。

  1. 返回“缺少操作数”错误。
  2. 创建了新目录,但文件未从旧文件夹移动到新文件夹。
  3. 我的代码:

    @echo off
    
    FOR /F "skip=1 tokens=1-6" %%A IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (
      SET /A MONTH=%%D
      SET /A YEAR=%%F
    )
    
    :: Set month to last month
    set /a MONTH=%MONTH%-1
    
    :: If month equals zero, reset to 12
    if %MONTH%==0 set MONTH=12
    
    :: If month < 10, fill with zero
    if %MONTH% LSS 10 set MONTH=0%MONTH%
    
    :: If month = 12, subtract one year
    if %MONTH%==12 set /a YEAR=%YEAR%-1
    
    SET FILEDATE=%YEAR%-%MONTH%
    
    SET FOLDER2=E:\ARCHIVE\%FILEDATE%
    
    MKDIR %FOLDER2%
    
    :: trying to recreate the format MOVE C:\FOLDER1\\*2013-07*.* E:\FOLDER2\2013-07 which does work
    MOVE C:\FOLDER1\\*%FILEDATE%*.* %FOLDER2%
    
    :END
    
    EXIT
    
    编辑:下面的两位回应者都非常有帮助。我试图投票,但我猜我的名声并不好。母亲是对的 - 保护你的回报!它会让你走得更远。 :)

2 个答案:

答案 0 :(得分:3)

您最好使用%date%,而不是wmic,但您可以尝试:

for /f "skip=1 delims=" %%a in ('WMIC Path Win32_LocalTime Get Month^,Year /Format:table') do for /f "tokens=1,2" %%b in ("%%a") DO SET "month=%%b" &SET "year=%%c"

答案 1 :(得分:1)

只是一个小编辑 - 它看起来应该有效 - 正如你的解释所说文件夹创建得很好。

MOVE "C:\FOLDER1\*%FILEDATE%*" "%FOLDER2%"