Zum Inhalt springen

speichern als Bat?


Empfohlene Beiträge

Geschrieben

Hi Leute

ich will das mein Javprogramm ein Paar Variablen in einer Datei speichert(scan.bat).

String a="ECHO OFF";

String b="ping -n 1 -w 50 "+computername+" | findstr "TTL="; >NUL";

String c="if %errorlevel%==0 echo 1";

String d="if %errorlevel%==1 echo 0";

Der Text der am ende in der gespeicherten datei steht soll dann so aussehen(muss so aussehen)

@ECHO OFF

ping -n 1 -w 50 soave | findstr "TTL=" >NUL

if %errorlevel%==0 echo 1

if %errorlevel%==1 echo 0

Geschrieben

mein Problem ist eigentlich, dass ich blutiger anfänger bin und nicht weis wie FileWriter funktioniert oder wie man überhaupt etwas speichern kann.

Ich will eigentlich nur eine Methode erstellen die in der Lage ist eine ping.bat individuell für jeden benutzernamen zu erstellen

Geschrieben

Also wenn du Java lernen willst, dann würde ich dir stark empfehlen ein geeignetes Einführungstutorial zu suchen auf dem INet oder ein gutes Buch zu kaufen. Ich kann dir leider keines empfehlen, da ich Java wärend des Studiums gelernt habe und keine Bücher hatte.

Aber es gibt einige sehr nützliche Seiten auf dem Internet.

Die Java API Documentation: Sie beschreibt alle Klassen von Java.

http://java.sun.com/j2se/1.4.2/docs/api/index.html

Die Java Language Specification: Sie erklärt und beschreibt die Sprache Java selber (z.B. wie man ein Array erzeugt, verändert, etc)

http://java.sun.com/docs/books/jls/second_edition/html/j.title.doc.html

Noch was nützliches: Wie der Code überhaupt aussehen soll.

Dies beschreiben die Java Code Conventions. Ist zwar kein muss, jedoch ist gut lesbarer und vorallem einheitlicher Code schon das halbe Programmieren :-)

http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html

Natürlich findest du noch viele weitere Dokumentationen und Beispiele von Java auf der Sun Microsystems Seite.

Java SDK Documentations

Aber nun zu deinem ganz spezifischen Problem.

Code des Files Scan.java:


import java.io.*;


public class Scan {

	public static void main(String[] args) {

		File file = new File("./scan.bat");

		FileWriter writer;

		String computername = "hallo";

		String a = "@ECHO OFF\n";

		String b = "ping -n 1 -w 50 " + computername + " | findstr \"TTL=\" >NUL\n";

		String c = "if %errorlevel%==0 echo 1\n"

				+ "if %errorlevel%==1 echo 0\n";



		try {

			writer = new FileWriter(file);

			writer.write(a + b + c);

			/*

			or


			writer.write(a);

			writer.write(;

			writer.write(c);

			*/


			writer.close();

		} catch(IOException e) {

			System.err.println(e);

			e.printStackTrace();

		}

	}

}

[/code]

Geschrieben

Dir ein Tutorial holen (s.o.), das lesen und verstehen, wie man mit Java umgeht und es dann selber wissen.

So bringt Dir das nichts. Du kannst nicht jede einzelne Frage beantworten lassen. Da lernst Du nichts.

Aber als Stichworte: Date mit InputStream oder Reader öffnen, lesen bis zum gewünschten Punkt, Wert merken, fertig.

Peter

Geschrieben

Eigentlich hat kingofbraint recht. Deine Probleme sind relativ einfach und würden sich perfekt eignen um Java zu lernen. An einfachen Problemen lernt man am besten/einfachsten.

Aber da es mir langweilig ist, habe ich trotzdem schon einiges geschrieben.

Am besten würde man dies mit Regular Expressions machen.

http://www.perldoc.com/perl5.6/pod/perlre.html (kommt ursprünglich von perl, aber wird mittlerweilen in allen Programmiersprachen unterstützt).

Ich bin leider nicht so vertraut mit Regular Expressions und müsste auch zuerst Dokus durchlesen.

Es gibt jedoch eine Möglichkeit, indem man sich das Wissen um den Aufbau des Files zu nutze macht.

Wir wissen, dass die Zeile mit "ping -n 1 -w 50" beginnt und mit " | findstr \"TTL=\" >NUL" aufhört. Also kann man danach suchen :-)

In der JavaAPI finden wir schön beschrieben wie das Gegenstück zum FileWriter heisst und funktioniert: FileReader.


import java.io.*;


/**

 * This Program is written as example for file writing and reading.

 *

 * @author MikeVader

 * @since 1.1

 */

public class Scan {

    public static final String pingPrefix = "ping -n 1 -w 50 ";

    public static final String pingPostfix = " | findstr \"TTL=\" >NUL";


    public static void main(String[] args) {

        File file = new File("./scan.bat");

        String computerName = "pc01";

        Scan scan = new Scan();


        scan.createPingFile(file, computerName);

        System.out.println(scan.getComputerName(file));

    }


    /**

     * Generate a batch-file to ping a given computer.

     *

     * @param file The name and path for the batch-file.

     * @param computerName The name of the computer

     */

    public void createPingFile(File file, String computerName) {

        FileWriter writer;

        String a = "@ECHO OFF\n";

        String b = pingPrefix + computerName + pingPostfix + "\n";

        String c = "if %errorlevel%==0 echo 1\n"

                + "if %errorlevel%==1 echo 0\n";



        try {

            writer = new FileWriter(file);

            writer.write(a + b + c);

            /*

            or


            writer.write(a);

            writer.write(;

            writer.write(c);

            */


            writer.close();

        } catch (IOException e) {

            System.err.println(e);

            e.printStackTrace();

        }

    }


    /**

     * Retrieve the computername out of a previously generated batch-file.

     *

     * @param file The generated batch-file.

     * @return The computername.

     */

    public String getComputerName(File file) {

        String computerName = new String();

        BufferedReader reader;


        try {

            String line;

            /*

             Für etwas besseren Komfort beim einlesen verwenden wir

             den BufferedReader der auf dem FileReader aufsetzt.

             Würde jedoch auch ohne gehen.

            */

            reader = new BufferedReader(new FileReader(file));


            while ((line = reader.readLine()) != null) {

                if (!line.startsWith(pingPrefix) || !line.endsWith(pingPostfix))

                    continue;


                computerName =

                    line.substring(pingPrefix.length(), line.indexOf(pingPostfix));

            }


            reader.close();

        } catch (FileNotFoundException e) {

            System.err.println(e);

            e.printStackTrace();

        } catch (IOException e) {

            System.err.println(e);

            e.printStackTrace();

        }


        return computerName;

    }

}

[/code]

Du wunderst dich sicher über die etwas seltsam anmutenden Kommentare die ich geschrieben habe. Dies hat mit javadoc zu tun.

Geschrieben

Ja O.K. ihr habt schon recht wenn ihr meint es wäre besser erst mal gründlich nachzulesen.

Aber irgendwie hatte ich bei der Lösung des Problems immer das speichern in Visual Basic im hinterkopf und bin dadurch dann komplett vom weg abgekommen.

Jedenfalls hab ich jetzt ein super Programm mit graphischer Oberfläche und optimaler funktionalität. Aber gibt es irgendwie eine Möglichkeit das beim starten des Programms das DOS-Fenster nicht angezeigt wird?

Ich meine gibt es irgendwelche Parameter für JAVA.exe die dafür sorgen das das interpreter-Fenster im Hintergrund ist? Sieht nämlich echt hässlich aus wie es momentan ist.

Geschrieben

Danke! Und gibt es irgendwie eine Möglichkeit eine Datei zu erstellen die ein JAVA-Programm unkompliziert aufruft?

Im Moment geschieht der Programmaufruf bei mir für den User über ne Batch-Datei aber wenn das Programm in einen anderen Ordner verschoben würde hätte der User wohl weniger freude daran.

Geschrieben

Die ganze Applikation in ein jar-File packen. Da musst du aber nachlesen wie es geht! (ich habe die Erfahrung gemacht, dass man besser diese Arbeit von ant machen lässt. Aber man kanns natürlich auch von Hand machen.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...