Au travail, je garde souvent une sauvegarde de mes documents. La principale raison est la gestion des versions des fichiers.
La méthode consiste à copier le fichier sur l'Explorateur et à entrer la date et l'heure dans le nom du fichier afin que vous puissiez voir la date et l'heure de modification de chaque fichier avant de modifier la dernière version. Cela ressemble à ceci (↓).
Il existe de nombreux services dans le monde qui peuvent gérer facilement les versions de fichiers, tels que Box, et je pense que de nombreuses personnes les utilisent. Cependant, cette méthode présente également des avantages.
D'autre part, le ** point gênant ** de cette méthode de gestion est que la procédure est compliquée comme suit.
[Ctrl] + [C]
→ [Ctrl] + [V]
)Cela ne me dérange pas une seule fois, mais comme je le répète tous les jours et plusieurs fois, cela devient assez ennuyeux. De plus, si je fais une erreur dans la date en raison d'une faute de frappe, l'ordre de mise à jour sera interrompu lors de l'organisation par nom de fichier.
J'ai donc décidé de créer un outil et de le rendre plus facile. La condition est que le fichier nommé "-latest" juste avant l'extension de fichier, tel que "Proposition -latest.docx".
Si vous faites glisser et déposez le fichier sur l'outil sur l'Explorateur, il sera automatiquement sauvegardé et le nom du fichier sera mis à jour.
Un fichier batch appelé backup.bat
est un outil, et il vous suffit de glisser-déposer le fichier cible dans le fichier batch.
Dans le fichier de commandes, les programmes Java sont en cours d'exécution.
La figure ci-dessous montre le résultat de l'exécution. C'est pratique car vous pouvez effectuer une sauvegarde en un seul clic.
Le code source ressemble à ceci. Il fonctionne avec une combinaison de Java et de fichiers batch. Compilez votre programme Java et placez les fichiers de classe et de lot dans le même dossier.
Au moment de l'exécution, faites glisser et déposez le fichier que vous souhaitez sauvegarder dans le fichier de commandes sur l'Explorateur, comme illustré dans la figure ci-dessus. Effectuez une sauvegarde dans le même dossier que le fichier cible.
De plus, dans mon cas, je crée un raccourci pour l'outil (fichier batch) sur le bureau et le glisse et le dépose sur le raccourci.
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
Il y avait une description incorrecte que "Box" est un "service Microsoft", donc je l'ai corrigée. Nous nous excusons pour la correction.
Recommended Posts