【问题标题】:Batchfile to create backup and rename with timestamp使用时间戳创建备份和重命名的批处理文件
【发布时间】:2013-08-01 14:30:59
【问题描述】:

我有以下网络路径可将文件复制到存档文件夹。它将File 1Folder 复制到Archive,但我想添加这两个不起作用的调整。

  1. File 1-1 重命名为File 1 - date + time
  2. 现在运行它会显示一个带有复制代码的 cmd 框,是否可以 在后台运行它或有一个加载屏幕来显示 进展?

对于我的代码,我按照this example 将名称更改为日期。

copy "F:\Folder\File 1.xlsx" "F:\Folder\Archive\File 1-1.xlsx"
/f "tokens=1-5 delim s=/ " %%d in ("%date%") do rename "F:\Folder example 2.xlsx" "F:\Folder\File example %%e-%%f-%%g.xlsx"

【问题讨论】:

    标签: windows batch-file windows-vista


    【解决方案1】:

    看看这是不是你想做的:

    @echo off
    for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set dt=%%a
    set YYYY=%dt:~0,4%
    set MM=%dt:~4,2%
    set DD=%dt:~6,2%
    set HH=%dt:~8,2%
    set Min=%dt:~10,2%
    set Sec=%dt:~12,2%
    
    set stamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%
    
    copy "F:\Folder\File 1.xlsx" "F:\Folder\Archive\File 1 - %stamp%.xlsx"
    

    【讨论】:

    • 6年后我用了。
    • 此解决方案的好处是将日期的最重要部分放在新文件名的最前面,因此年在月之前,在日之前。 (这意味着按名称顺序排序的文件也按日期顺序排序。)它独立于语言环境。如果将除复制命令之外的所有命令放在批处理文件中,则可以运行此命令,然后以相同的日期和时间运行多个复制。
    【解决方案2】:

    根据当前系统日期重命名所有 .pdf 文件。例如,一个名为 Gross Profit.pdf 的文件被重命名为 Gross Profit 2014-07-31.pdf。如果您明天运行它,它会将其重命名为Gross Profit 2014-08-01.pdf

    您可以将? 替换为报告名称Gross Profit,但它只会重命名一个报告。 ? 重命名 Conduit 文件夹中的所有内容。之所以有这么多?,是因为有些.pdfs 名字很长。如果您只输入 12 个?s,那么任何超过 12 个字符的名称都将在第 13 个字符处被剪掉。用 1 个? 试试,然后用多个?s 试试。 ? 的长度应该稍长一些或与最长的报告名称一样长。

    @ECHO OFF
    SET NETWORKSOURCE=\\flcorpfile\shared\"SHORE Reports"\2014\Conduit
    REN %NETWORKSOURCE%\*.pdf "????????????????????????????????????????????????? %date:~-4,4%-%date:~-10,2%-%date:~7,2%.pdf"
    

    【讨论】:

      【解决方案3】:

      试试这个:

      ren "File 1-1" "File 1 - %date:/=-% %time::=-%"
      

      【讨论】:

      • 这是否需要任何额外的文档,或者仅使用这个就足够了?
      • 哦,赢的太难了。这是使用%DATE%%TIME% 等Windows 环境变量的最优雅直接的方法。谢谢!太棒了。
      • 我的回答仅对特定问题有效。
      • 仅使用 %DATE% 将在日期字符串中输出 /,这会导致我的路径出现问题。使用 %date:/=-% 将 / 替换为 - 字符并且我的路径有效。
      • 8 年后我还在用它!
      【解决方案4】:

      我已修改 Foxidrive 的答案以复制整个文件夹及其所有内容。 此脚本将创建一个文件夹并将另一个文件夹的内容备份到其中,包括下面的所有子文件夹。

      如果您将此设置为每小时计划的任务,则需要小心,因为您可能会用原始文件夹的副本快速填满您的驱动器。在 bitbucket 等之前,我使用类似的脚本来离线保存我的代码。

      @echo off
      for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set dt=%%a
      set YYYY=%dt:~0,4%
      set MM=%dt:~4,2%
      set DD=%dt:~6,2%
      set HH=%dt:~8,2%
      set Min=%dt:~10,2%
      set Sec=%dt:~12,2%
      
      set stamp=YourPrefixHere_%YYYY%%MM%%DD%@%HH%%Min%
      rem you could for example want to create a folder in Gdrive and save backup there
      cd C:\YourGoogleDriveFolder
      mkdir %stamp%
      cd %stamp%
      
       xcopy C:\FolderWithDataToBackup\*.* /s 
      

      【讨论】:

        【解决方案5】:

        是的,要让它在后台运行,请创建批处理文件的快捷方式并进入属性。我在 Linux 机器 ATM 上,但我相信您想要的选项在高级选项卡中。

        您也可以像这样通过 vbs 脚本运行批处理脚本:

        'HideBat.vbs
        CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True
        

        这将执行您的批处理文件,但不显示 cmd 窗口。

        【讨论】:

          猜你喜欢
          • 2014-12-17
          • 2013-07-04
          • 2015-07-16
          • 2018-03-09
          • 2015-04-20
          • 1970-01-01
          • 2015-01-27
          • 2010-11-07
          • 1970-01-01
          相关资源
          最近更新 更多