Batch file 批处理-使用创建日期从目录复制/归档文件。 很好的一天!

Batch file 批处理-使用创建日期从目录复制/归档文件。 很好的一天!,batch-file,Batch File,所以,我想做的是: 归档在所选月份创建的所有文件类型文件,并将其移动到其他目录 创建备份文件夹,其中包含所选月份共同响应的所有文件类型文件 这是我此刻所拥有的: ECHO OFF COLOR 9E CLS :MENU ECHO( ECHO( ............................................... ECHO( Choose month of the year. ECHO( .................................

所以,我想做的是:

  • 归档在所选月份创建的所有文件类型文件,并将其移动到其他目录
  • 创建备份文件夹,其中包含所选月份共同响应的所有文件类型文件 这是我此刻所拥有的:

    ECHO OFF
    COLOR 9E
    CLS
    :MENU
    ECHO(
    ECHO( ...............................................
    ECHO(           Choose month of the year.
    ECHO( ...............................................
    ECHO(
    ECHO 1  - January
    ECHO 2  - February
    ECHO 3  - March
    Echo 4  - April
    Echo 5  - May
    Echo 6  - June
    Echo 7  - July
    Echo 8  - August
    Echo 9  - September
    Echo 10 - October
    Echo 11 - November
    Echo 12 - December
    ECHO 13 - EXIT
    ECHO(
    
    SET /P M= Type prefered month, then press ENTER:
    IF %M%==1  GOTO JANUARY
    IF %M%==2  GOTO FEBRUARY
    IF %M%==3  GOTO MARCH
    IF %M%==4  GOTO APRIL
    IF %M%==5  GOTO MAY
    IF %M%==6  GOTO JUNE
    IF %M%==7  GOTO JULY
    IF %M%==8  GOTO AUGUST
    IF %M%==9  GOTO SEPTEMBER
    IF %M%==10 GOTO OCTOBER
    IF %M%==11 GOTO NOVEMBER
    IF %M%==12 GOTO DECEMBER
    IF %M%==13 GOTO EOF
    
    :January
    cd C:\Users\PC\Desktop\Folder
    
    [I am stuck here]
    
    cls
    GOTO MENU
    
    :February
    cd C:\Users\PC\Desktop\Folder
    
    [I am stuck here]
    
    cls
    GOTO MENU
    
    :MARCH
    cd C:\Users\PC\Desktop\Folder
    
    [I am stuck here]
    cls
    GOTO MENU
    
    :APRIL
    cd C:\Users\PC\Desktop\Folder
    
    [I am stuck here]
    
    cls
    GOTO MENU
    
    :MAY
    cd C:\Users\PC\Desktop\Folder
    
    [I am stuck here]
    
    cls
    GOTO MENU
    
    :JUNE
    cd C:\Users\PC\Desktop\Folder
    
    [I am stuck here]
    
    cls
    GOTO MENU
    
    :JULY
    cd C:\Users\PC\Desktop\Folder
    
    [I am stuck here]
    
    cls
    GOTO MENU
    
    :AUGUST
    cd C:\Users\PC\Desktop\Folder
    
    [I am stuck here]
    
    cls
    GOTO MENU
    
    :SEPTEMBER
    cd C:\Users\PC\Desktop\Folder
    
    [I am stuck here]
    
    cls
    GOTO MENU
    
    :OCTOBER
    cd C:\Users\PC\Desktop\Folder
    
    [I am stuck here]
    
    cls
    GOTO MENU
    
    :NOVEMBER
    cd C:\Users\PC\Desktop\Folder
    
    [I am stuck here]
    
    cls
    GOTO MENU
    
    :DECEMBER
    cd C:\Users\PC\Desktop\Folder
    
    [I am stuck here]
    
    cls
    GOTO MENU
    
    我的问题是,我所在的公司不使用未经许可的软件。为了节省一些钱,他们在工作电脑上安装了7zip

    所以,我的问题是:

  • 如何将[Month]中创建的所有文件类型文件添加到7zip存档,命名为[MM_YYYY],并将其移动到另一个文件夹

  • 如何创建名为[MM_YYYY]的备份文件夹,并仅将与所选月份相对应的.file类型文件放在该文件夹中


  • 这个脚本对我来说很适合你的任务。将
    dir
    值更改为实际文件夹路径。将此脚本保存到其他文件夹中的test.bat,并从open Cmd提示符运行。脚本采用日期格式
    [DD:MM:YYYY]
    。若要将其与格式
    [MM:DD:YYYY]
    一起使用,请将所有出现的
    中的0替换为3!克蒙:~0,2。如果有任何错误,请告诉我:

    @echo off
    setlocal enabledelayedexpansion
    set "mes1=Enter the month letter"
    set dir=%userprofile%\Desktop\Folder
    
    COLOR 9E
    CLS
    :MENU
    ECHO(
    ECHO( ...............................................
    ECHO(           Choose month of the year.
    ECHO( ...............................................
    ECHO(
    ECHO J - January
    ECHO F - February
    ECHO M - March
    Echo P - April
    Echo Y - May
    Echo N - June
    Echo L - July
    Echo U - August
    Echo S - September
    Echo O - October
    Echo V - November
    Echo D - December
    ECHO X - EXIT
    ECHO(
    
    choice /c JFMPYNLUSOVDX /n /m "%mes1%: > " /t 10 /d X
    IF %errorlevel% equ 13 (GOTO :end
    ) else if %errorlevel% LEQ 9 (set i=0%errorlevel%) else (set "i=%errorlevel%")
    pushd "%dir%"
    for /f "tokens=1,5" %%G in ('dir /o:d /a:-d "%dir%"') do (set cmon=%%G
        if "!cmon:~2,1!"=="/" if "!cmon:~0,2!"=="!i!" (set cdir=!cmon:~0,2!-!cmon:~6,4!
            (if not exist "!cdir!" md "!cdir!") & copy "%%H" !cdir! >nul))
    pushd "!cdir!" & "c:\Program Files\7-Zip\7z.exe" a !cdir!.zip >nul & popd
    
    :end
    echo/ & echo All tasks completed
    timeout 5 >nul
    exit /b
    

    要更好地了解脚本的工作原理,请参阅。

    此代码示例远远不是最小的…Windows资源管理器中PC上文件的修改日期显示格式是什么?另外,您希望将ZIP文件和[MM\U YYYY]备份文件夹保存到哪个路径\文件夹\名称?@Vairis您是否阅读过7-ZIP的文档(帮助文件)?它支持基于文件名列表压缩文件。因此,您需要做的就是查找所选月份内上次修改或创建的所有文件,并将它们重定向到
    %TEMP%
    中的列表文件中,将此列表文件作为参数与其他参数(如存档文件名和开关)一起调用7-Zip,最后删除临时创建的列表文件。顺便说一下:最后一次修改文件的日期可以是3个月前的今天。你真的想用创建来代替上次修改日期吗?@Vairis提示:共享软件archiver WinRAR的单一许可证只需支付一次无限更新费用,仅需30美元。我提到这一点是因为WinRAR具有用于此类基于时间的归档任务的交换机,因此很容易完成这些任务。WinRAR本身可以根据各种
    -t
    开关在指定的时间段内找到要存档的文件。您的公司应该考虑购买WinRAR许可证是否真的比您为免费软件archiver 7-Zip编写代码所需的时间更为昂贵,以及将来可能的其他归档任务。@Mofi对于新手来说,这项任务并不简单或明显。为体验批处理程序编写代码和调试也需要一些时间。上帝保佑那些真正喜欢帮助人们的程序员。顺便说一句,若你们不介意的话,我还有一个要求。请你解释一下,这整个剧本是如何运作的?很难对它进行分析,这就是为什么它很可能无法正常工作的原因。当脚本运行时,您可以选择显示的任何月份,但由于某种原因,当ZIP制作完成时,它会将所有文件和文件夹都推入其中,这是可以的,但我只需要。文件类型文件:P。至于在同一目录中创建备份,不幸的是它根本不起作用。基本上不起作用的内容:ZIP-已创建,但名称为空,并且包含所有文件夹和.file类型的文件,也不会发送到任何地方,因为代码中没有设置位置(这是我不理解代码的错误)。备份-未被创建。其他一切正常。您是否将dir值更改为存储要备份的文件的实际路径?脚本假定,您将所有批存储在与要备份的文件不同的目录中。它非常适合我。尝试一步一步地了解它的功能以排除故障。感谢您的帮助。我真的很感激:)希望以后能再见到你:)Zip文件与所有备份文件一起保存在新创建的目录中。文件夹不保存在.zip中,只保存文件。您可以将.zip文件保存在任何其他位置,但请通过其帮助仔细选择7zip选项,因为在这种情况下,该文件可能包含完整路径。