업무 중에 사용되는 파일을 간단하게 백업하고 싶습니다.
회사에서 겪는 어려움
업무상 자료의 백업을 자주 남긴다.주요 이유는 파일의 버전 관리이다.
이 방법은 최신 버전을 수정하기 전에 자원 관리자에서 파일을 복사한 후 파일 이름에 날짜와 시간을 입력해서 각 파일의 업데이트 날짜와 시간을 알 수 있도록 하는 것이다.이런 느낌이야.
이 세상에서 박스처럼 파일을 쉽게 관리할 수 있는 버전의 서비스가 많은데 많은 사람들이 이용하고 있다고 생각합니다.다만, 이 방법도 좋은 점이 있다.
공짜죠.
[Ctrl]+[C]
→[Ctrl]+[V]
또 타자 오류로 날짜 오류가 발생하면 파일 이름으로 배열할 때 업데이트 순서가 붕괴되는 점도 곤란하다.
순식간에 백업할 수 있는 제작 도구
그래서 나는 도구를 만들어 즐거움을 누리기로 했다.
'기획서 -latest.docx' 와 같이 파일 확장자는 '-latest' 라는 파일이어야 합니다.
자원 관리자에서 이 파일을 도구에 끌어다 놓으면 자동으로 파일 이름을 백업하고 업데이트합니다.
배치 파일backup.bat
은 대상 파일을 배치 파일로 드래그하기만 하면 되는 도구입니다.
배치 파일에서 Java를 실행하는 프로그램입니다.
다음 그림은 실행 결과입니다.
클릭하여 백업을 수행할 수 있어 편리합니다.
소스 코드
소스 코드는 이런 느낌입니다.Java 및 배치 파일의 결합 작업
Class 파일과 배치 파일을 같은 폴더에 배치하려면 Java 프로그램을 컴파일하십시오.
실행할 때 백업할 파일을 자원 관리자에서 일괄 처리 파일로 드래그하십시오. 위 그림과 같습니다.대상 파일과 같은 폴더에 백업을 만듭니다.
그리고 자신의 데스크톱에 도구(일괄 처리 파일)의 단축키를 만들고 그 단축키를 끌어다 놓으세요.
CopyAndBackupFile.javaimport 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의 서비스"라는 잘못된 기술이 있기 때문에 수정했습니다.사과하고 정정할게요.
Reference
이 문제에 관하여(업무 중에 사용되는 파일을 간단하게 백업하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hachan/items/abd3a8579ff0a9a0d939
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
소스 코드는 이런 느낌입니다.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의 서비스"라는 잘못된 기술이 있기 때문에 수정했습니다.사과하고 정정할게요.
Reference
이 문제에 관하여(업무 중에 사용되는 파일을 간단하게 백업하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hachan/items/abd3a8579ff0a9a0d939
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(업무 중에 사용되는 파일을 간단하게 백업하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hachan/items/abd3a8579ff0a9a0d939텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)