1

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

我想出了下面的代码,但它并不完全有效。

  1. 返回“缺少操作数”错误。
  2. 新目录已创建,但文件并未从旧文件夹移动到新文件夹。

我的代码:

@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

编辑:下面的两个响应者都非常有帮助。我试图投票给他们,但我想我的名声不好。妈妈是对的——小心你的名誉!它会让你走得更远。:)

4

2 回答 2

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"
于 2013-08-09T22:36:04.553 回答
1

只是一个小的编辑 - 它看起来应该可以工作 - 正如您的解释所说的那样,该文件夹正在创建得很好。

MOVE "C:\FOLDER1\*%FILEDATE%*" "%FOLDER2%"
于 2013-08-10T00:48:30.607 回答