Ich werde jeden Tag ein internes Tagebuch einreichen. Um ehrlich zu sein, ist es schwierig, die Datei jeden Tag zu kopieren und das heutige Datum einzugeben. Ich kann nicht gut klicken.
Deshalb habe ich es so weit wie möglich automatisiert.
Insbesondere wird eine Kopie mit dem Datum im Dateinamen mit einem einzigen Doppelklick erstellt. Ich habe den Inhalt der XLS-Datei nicht manipuliert. Es scheint eine Bibliothek zu geben, die das kann, aber diesmal ist es aus.
Ich habe Java und Batch-Dateien verwendet.
Ich konnte alles tun, was ich tun und lernen wollte.
Unten erklärt.
Java
Vorerst aus dem Programm selbst.
copyReport.java
package copyReport;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class CopyReport {
public static void main(String[] args) {
//Bitten Sie sie, einen Ordner auf ihrem Desktop abzulegen
String desktopPath = "C:\\Users\\"+System.getProperty("user.name")+"\\Desktop";
String folderPath = desktopPath+"\\copyreport";
//Holen Sie sich die Dateinamen im Programmordner als Array
File[] files = new File(folderPath).listFiles();
//Rufen Sie den Namen der Quelldatei ab. Ich habe es möglich gemacht, es in meinen eigenen Namen zu ändern.
String baseFileName = "";
for(File f:files) {
if(f.getName().matches(".*Tagesbericht_.*\\.(xls|xlsx|ods)")) {
baseFileName = f.getName();
}
}
//Suchen Sie nach einer Quelldatei
if(baseFileName.isEmpty()) {
System.out.println("Die Quelldatei wurde nicht unter copyreport gefunden.");
return;
}
File baseFile = new File(folderPath,baseFileName);
if(!baseFile.exists()) {
System.out.println("Die Quelldatei wurde nicht gefunden.");
return;
}
//Generieren Sie den heutigen Dateinamen ab Datum
String today = LocalDate.now().format(DateTimeFormatter.ofPattern("YYYYMMdd"));
String outFileName = today + baseFileName.substring(baseFileName.lastIndexOf("Tagesbericht_"));
System.out.println(outFileName + "Kopieren als.");
//Überprüfen Sie, ob es bereits vorhanden ist
File outFile = new File(desktopPath,outFileName);
if(outFile.exists()) {
System.out.println("Die Zieldatei ist bereits vorhanden.");
return;
}
//Nachricht ausgeben
System.out.println("Kopieren Sie die Datei.");
System.out.println("Kopieren Sie den Namen des Quellordners;"+folderPath);
System.out.println("Namen der Quelldatei kopieren:"+baseFile.getName());
System.out.println();
System.out.println("Namen des Zielordners kopieren;"+desktopPath);
System.out.println("Name der Zieldatei kopieren:"+outFile.getName());
try {
//Erstellen Sie einen Stream aus der Instanz der Kopierquell- / Zieldatei
FileInputStream fis = new FileInputStream(baseFile);
FileOutputStream fos = new FileOutputStream(outFile);
//Verwalten Sie Puffer und lesen Sie Bytes
byte[] buf = new byte[256];
int len=0;
//Lesen und schreiben Sie jeden Stream bis zum Ende der Datei
while((len = fis.read(buf)) != -1) {
fos.write(buf,0,len);
}
//Schreiben Sie den fehlenden Teil aus
fos.flush();
//Beenden Sie den Zugriff auf die Datei
fos.close();
fis.close();
//Botschaft
System.out.println("Die Datei wurde erfolgreich kopiert.");
} catch (FileNotFoundException e) {
System.out.println("Fehler beim Kopieren der Datei.");
e.printStackTrace();
} catch (IOException e) {
System.out.println("Fehler beim Kopieren der Datei.");
e.printStackTrace();
}
}
}
Da es sich nicht um ein weit verbreitetes Tool handelt, soll es "einen Ordner direkt auf dem Desktop ablegen und ausführen".
Der Speicherort des von Ihnen verwendeten Windows 10-Desktops ist C: \ user \ (USER-Name) \ Desktop. Dieser Speicherort variiert von Person zu Person. Rufen Sie ihn daher unter System.getproperty (Benutzername) ab und geben Sie ihn ein.
Da es sich um einen Ordner zum Speichern von Programmen, Kopieren von Quelldateien und Ausführen von Bat-Dateien handelt, besteht eine zweistufige Struktur zum Abrufen des gesamten Namens → Abrufen des Namens der Kopierquelldatei.
(Beliebiges Datum) Täglicher Bericht_ (Beliebiger Name). (Xls oder xlsx oder ods) Regulären Ausdruck. Rufen Sie die entsprechende Datei als Namen der Kopierquelldatei ab. Wenn Ihr Name im ursprünglichen Dateinamen enthalten ist, wird er auf diese Weise so kopiert, wie er ist.
Ich denke nicht, dass es übertrieben ist, aber es ist schwieriger, wenn es eine Lücke gibt.
Holen Sie sich das heutige Datum als 8-stellige Zahlenfolge. Erstellen Sie einen Namen für die Kopierzieldatei, indem Sie ihn in die erste Hälfte des Namens der Kopierquelldatei einfügen.
Es wäre ein Problem, wenn der tägliche Bericht, in dem ich den Inhalt geschrieben habe, überschrieben würde (ich glaube, ich habe ihn überhaupt nicht überschrieben). Überprüfen Sie ihn daher vorerst.
Dieses Mal habe ich mich für FileInputStream und FileOutoutStream entschieden. Es scheint, dass der Buf, bei dem es sich um den Inhalt handelt, der aus FileInputStream in len Bytes gleichzeitig gelesen wird, an FileOutputStream gesendet wird. Als ich es nachgeschlagen habe, war es in jedem Material gleich geschrieben, aber aus diesem Grund gab es nur wenige Beispiele und es war schwierig, den Mechanismus zu verstehen.
Ich habe das Teil, das nicht gespült werden konnte, manuell gespült oder den Zugriff beendet. Es scheint, dass die Verarbeitung der Zugriffsbeendigung für Java 8 oder höher erfolgt.
Das war's für die Java-Programmierung. Danach können Sie aus Eclipse exportieren oder auf das JAR doppelklicken, um es auszuführen.
Tun Sie es so, wie es mit Datei-> Export-> Ausführbare JAR-Datei fließt. Wie stark sollten der Name der JAR-Datei, der Projektname, der Name der Hauptklasse usw. ausgerichtet sein? Vollständig, wenn eine JAR-Datei auf dem Desktop generiert wird.
Der mit dem Namen JRE. War es eine Java-Laufzeitumgebung? Erforderlich, um Java (Java-Befehl, Javac-Befehl) an der Eingabeaufforderung auszuführen.
Wenn Sie Eclipse haben, können Sie schnell den Pfad von Bildschirm → Einstellungen → Java → Ausführungsumgebung übernehmen und in die Umgebungsvariable des PCs einfügen. Es scheint, dass Sie java.exe oder javac.exe direkt angeben können, diesmal jedoch den Ordner direkt darunter. Sobald ich es hineingesteckt hatte, ließ ich es hinein, also vergaß ich völlig, es einzulegen und war ungeduldig.
Verschieben Sie an der Eingabeaufforderung "java -jar copyReport.jar" aus dem Ordner, der die JAR-Datei enthält, und überprüfen Sie den Vorgang. Der Dateiname ist derjenige, der aus Eclipse exportiert wird.
Erstellen Sie eine .bat-Datei mit einem geeigneten Namen und bearbeiten Sie sie mit Notepad. Inhalt wie dieser
copy.bat
@echo off
cd ./copyreport
java -jar copyReport.jar
timeout 5
Nachfolgende Inhalte der Befehlseingabe müssen nicht angezeigt werden (Echo aus). Sie müssen den Befehl (@) nicht anzeigen.
Ein Befehl zum Verschieben des aktuellen Speicherorts der Konsole in den Ordner "copyreport" direkt unter dem gestarteten Ordner. Selbst wenn Sie einen Fehler machen, wird er nicht fallen, sodass Sie ihn mit Sicherheit ausführen können. Es gibt einen Fehler, dass die Zukunft nicht funktioniert, wenn der Ordner mit dem Namen copyreport im Ordner copyreport fehlschlägt.
Führen Sie die angegebene Java-Datei als JAR mit Java aus
Schließen Sie diesen Bildschirm nach 5 Sekunden. Wenn Sie eine Nachricht erhalten, diese aber löschen möchten, fügen Sie am Ende "> nul" hinzu. Die Bedeutung davon ist "Bitte geben Sie die Nachricht an nul aus".
Ich habe es geschrieben, nachdem ich den Dateivorgang überprüft hatte, aber es dauerte fast einen ganzen Tag. Das Lesen von FileInputStream # ist kompliziert und es scheint, dass der Inhalt von buf und len je nach Überladungsmethode verwirrt ist. Ehrlich gesagt war ich sehr beunruhigt. Der PC in der Ausführungsumgebung wird dadurch nicht verändert, daher kann man ihn leicht vergessen, daher möchte ich vorsichtig sein.
Recommended Posts