업무 중에 사용되는 파일을 간단하게 백업하고 싶습니다.

14487 단어 백업릴리즈Java

회사에서 겪는 어려움


업무상 자료의 백업을 자주 남긴다.주요 이유는 파일의 버전 관리이다.
이 방법은 최신 버전을 수정하기 전에 자원 관리자에서 파일을 복사한 후 파일 이름에 날짜와 시간을 입력해서 각 파일의 업데이트 날짜와 시간을 알 수 있도록 하는 것이다.이런 느낌이야.

이 세상에서 박스처럼 파일을 쉽게 관리할 수 있는 버전의 서비스가 많은데 많은 사람들이 이용하고 있다고 생각합니다.다만, 이 방법도 좋은 점이 있다.
  • 파일 이름만 봐도 언제 업데이트되었는지 알 수 있다.
  • 버전마다 파일 이름이 다르기 때문에 쉽게 구분할 수 있다(박스 등에서 같은 파일 이름으로 버전 관리).

  • 공짜죠.
  • 다른 한편, 이 관리 방법의 번거로운 점은 다음과 같이 절차가 매우 복잡하다는 것이다.
  • 복사 붙이기 "기획서.docx"[Ctrl]+[C][Ctrl]+[V]
  • '기획서-복사.docx'라는 파일을 생성할 수 있다.
  • 파일 이름의 복사 섹션을 날짜 및 시간으로 변경합니다.파일의 업데이트 날짜를 확인하면서 입력하는 것은 매우 번거롭다.
  • 한 번이면 신경 안 쓰겠지만 매일 이걸 반복하면 귀찮아져.
    또 타자 오류로 날짜 오류가 발생하면 파일 이름으로 배열할 때 업데이트 순서가 붕괴되는 점도 곤란하다.

    순식간에 백업할 수 있는 제작 도구


    그래서 나는 도구를 만들어 즐거움을 누리기로 했다.
    '기획서 -latest.docx' 와 같이 파일 확장자는 '-latest' 라는 파일이어야 합니다.
    자원 관리자에서 이 파일을 도구에 끌어다 놓으면 자동으로 파일 이름을 백업하고 업데이트합니다.
    배치 파일backup.bat은 대상 파일을 배치 파일로 드래그하기만 하면 되는 도구입니다.
    배치 파일에서 Java를 실행하는 프로그램입니다.

    다음 그림은 실행 결과입니다.
    클릭하여 백업을 수행할 수 있어 편리합니다.

    소스 코드


    소스 코드는 이런 느낌입니다.Java 및 배치 파일의 결합 작업
    Class 파일과 배치 파일을 같은 폴더에 배치하려면 Java 프로그램을 컴파일하십시오.
    실행할 때 백업할 파일을 자원 관리자에서 일괄 처리 파일로 드래그하십시오. 위 그림과 같습니다.대상 파일과 같은 폴더에 백업을 만듭니다.
    그리고 자신의 데스크톱에 도구(일괄 처리 파일)의 단축키를 만들고 그 단축키를 끌어다 놓으세요.
    CopyAndBackupFile.java
    import java.net.*;
    import java.nio.file.*;
    import java.text.*;
    import java.util.*;
    
    public class CopyAndBackupFile {
      private static final String DEFAULT_PLACE_HOLDER = "latest";
      private static final SimpleDateFormat FORMAT_PREFIX = new SimpleDateFormat("YYYYMMdd");
      private static final SimpleDateFormat FORMAT_SUFFIX = new SimpleDateFormat("HHmm");
    
      public static void main(String[] args) throws Exception {
        int argc = 0;
        String placeHolder;
    
        if (args[argc].equals("-p")) {
          placeHolder = args[++argc];
          ++argc;
        } else {
          placeHolder = DEFAULT_PLACE_HOLDER;
        }
    
        assert placeHolder != null : "Placeholder is null";
    
        Path[] paths = new Path[args.length - argc];
        for (int i = 0; i < paths.length; i++, argc++) {
          paths[i] = Paths.get(args[argc]);
        }
    
      rename_loop:
        for (int i = 0; i < paths.length; i++) {
          Path pathOrg = Paths.get(paths[i].toString());
          Path dir = pathOrg.getParent();
          Path file = pathOrg.getFileName();
    
          String sFile = file.toString();
    
          int phStart = sFile.lastIndexOf(placeHolder);
          if (phStart < 0) {
            System.err.printf("ERROR: %s does not include \"%s\"%n", sFile, placeHolder);
            continue rename_loop;
          }
          int phEnd = phStart + placeHolder.length();
    
          long lastModified = pathOrg.toFile().lastModified();
          Date date = new Date(lastModified);
    
          String backupDate = FORMAT_PREFIX.format(date)
                                           .concat("T")
                                           .concat(FORMAT_SUFFIX.format(date));
    
    
          String sFileNew = sFile.substring(0, phStart)
                                 .concat(backupDate)
                                 .concat(sFile.substring(phEnd));
    
          Path pathNew = Paths.get(dir.toString(), sFileNew);
    
          System.out.printf("%s -> %s%n", pathOrg, pathNew);
          Files.copy(pathOrg, pathNew);
        }
      }
    }
    
    backup.bat
    @echo off
    setlocal
    
    rem
    rem The top directory of the tool
    rem
    set __tools_dir=%~d0%~p0
    set __last_char=%__tools_dir:~-1%
    if "%__last_char%"=="\" set __tools_dir=%__tools_dir:~0,-1%
    
    
    rem
    rem Environment variables
    rem
    set __java_bin_dir=C:\ProgramData\Oracle\Java\javapath
    set __classpath=%__tools_dir%
    
    if "%JAVA_HOME%"=="" (
      echo WARNING: JAVA_HOME is empty. Using %__java_bin_dir%
    ) else ( 
      set __java_bin_dir=%JAVA_HOME:"=%\bin
    )
    
    if not exist "%__java_bin_dir%\java.exe" (
      echo ERROR: %__java_bin_dir%\java.exe does not exist
      echo ERROR: set JAVA_HOME to the top directory of Java SE 7 or later
      goto :EOF
    )
    
    set __java_options=
    
    
    rem 
    rem Run
    rem
    @echo on
    "%__java_bin_dir%\java.exe" %__java_options% -classpath "%__classpath%" CopyAndBackupFile %*
    @echo off
    
    @endlocal
    

    기사 수정(2019년 7월 14일)


    "Box"는 "Microsoft의 서비스"라는 잘못된 기술이 있기 때문에 수정했습니다.사과하고 정정할게요.

    좋은 웹페이지 즐겨찾기