PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Warum kopiert meine batch Datei nicht?


Geldmann3
2012-08-12, 02:03:36
Hallo, habe nicht so viel Erfahrung mit batch Dateien.

Folgender Kopiervorgang will nicht...

@echo off
@echo Starte Dienst...
Programm.exe
@echo Programm wird in den Autostart kopiert
copy Programm.exe %APPDATA%\Microsoft\Windows\Startmenü\Programme\Autostart\AutoHideTaskbar.exe
exit
Das Skript stoppt offensichtlich nach Programm.exe, weil dieses noch gestartet wird.

-Saphrex-
2012-08-12, 03:44:13
Ist der Pfad korrekt?
Normalerweise befindet sich im Appdata nur Local, LocalLow und Roaming Ordner

Lokadamus
2012-08-12, 06:23:54
Hallo, habe nicht so viel Erfahrung mit batch Dateien.

Folgender Kopiervorgang will nicht...

@echo off
@echo Starte Dienst...
Programm.exe
@echo Programm wird in den Autostart kopiert
copy Programm.exe %APPDATA%\Microsoft\Windows\Startmenü\Programme\Autostart\AutoHideTaskbar.exe
exit
Das Skript stoppt offensichtlich nach Programm.exe, weil dieses noch gestartet wird.mmm...

Setz echo off auf echo on und dann siehst du, was er macht.
Das Exit am Ende kannst du weglassen.

setz vor dem Programm.exe ansonsten mal ein call.
Es kann sein, dass durch den Programmaufruf die Batch verlassen wird und nicht zurückgekehrt wird.
So sollte die Batch zwecks Fehlerüberprüfung aussehen:
@echo on
@echo Starte Dienst...
call Programm.exe
@echo Programm wird in den Autostart kopiert
copy Programm.exe %APPDATA%\Microsoft\Windows\Startmenü\Programme\Autostart\AutoHideTaskbar.exe

PatkIllA
2012-08-12, 09:09:13
was ist denn Programm.exe?
Außerdem kopiert man keine exe Dateien in den Autostart sondern legt da Verknüpfungen an.

Ectoplasma
2012-08-12, 10:21:40
Unter Windows 7 gibt es den Pfad %APPDATA%\Microsoft schonmal nicht.

Geldmann3
2012-08-12, 10:25:27
Ist der Pfad korrekt?
Normalerweise befindet sich im Appdata nur Local, LocalLow und Roaming Ordner
Ja, der sollte korrekt sein, denn die Umgebungsvariable "%APPDATA%" bringt dich nicht in den Appdata Ordner, sondern nach "C:\Users\{username}\AppData\Roaming" es sei denn, du bist noch unter WindowsXP in diesem Fall befindest du dich unter "C:\Dokumente und Einstellungen\{username}\Anwendungsdaten"

mmm...

Setz echo off auf echo on und dann siehst du, was er macht.
Das Exit am Ende kannst du weglassen.

setz vor dem Programm.exe ansonsten mal ein call.
Es kann sein, dass durch den Programmaufruf die Batch verlassen wird und nicht zurückgekehrt wird.
So sollte die Batch zwecks Fehlerüberprüfung aussehen:
Das Skript stoppt nach wie vor nachdem Programm.exe gestartet wurde.
was ist denn Programm.exe?
Außerdem kopiert man keine exe Dateien in den Autostart sondern legt da Verknüpfungen an.
Programm.exe lässt die Taskleiste nach einer Minute Inaktivität verschwinden und holt sie aus der Versenkung, sobald die Maus bewegt wird. Die Windows Version von "Taskleiste ausblenden" war mir zu schnell und darauf verzichten möchte ich auch nicht, weil sie sich sonst unter Umständen in den Plasma Panel einbrennen könnte. ;)
Warum keine .exe Datei da reinpacken? Stört doch niemanden...

Unter Windows 7 gibt es den Pfad %APPDATA%\Microsoft schonmal nicht.
Doch, einfach mal im Explorer anspringen (;

PatkIllA
2012-08-12, 10:29:12
Warum fummelst du da überhaupt mit batch und Autostart rum?
Reicht es nicht die einmal manuell in den Autostart zu packen wenn sie immer laufen soll? Wenn sie nicht dauernd laufen sollst kann man sie ganz normal starten und beenden.

Geldmann3
2012-08-12, 10:31:23
Im Moment hab ich es schon so gemacht, doch ich würde das Programm auch gerne noch anderen zur Verfügung stellen und die sollen dann nicht in den Systemordnern rumfummeln müssen. Ich werde auch eine "Uninstall.bat" dazupacken. Jetzt hätte ich es natürlich schon mit einem selbstentpackenden Archiv erledigt, doch ich will jetzt wissen warum das nicht funktioniert. (;

PatkIllA
2012-08-12, 10:33:32
Wenn das Programm von dir ist dann mach doch einen Kommandozeilenparameter, der das in den Autostart packt bzw. wieder rausnimmt. Dann reicht die exe.
Alterntiv per Kontextmenü im TrayIcon, so wie das viele andere Programme auch machen.

Geldmann3
2012-08-12, 10:37:57
Trayicons hab ich eigentlich schon genug. Das mit dem Kommandozeilenparameter wäre eine Idee. Aber warum geht die Batch nicht?

PatkIllA
2012-08-12, 10:40:57
Aber warum geht die Batch nicht?Das steht doch wahrscheinlich schon in #3. Je nach Art und Programmierung der exe entscheidet die exe wann die Batch weiterläuft.
Bei GUI-Programmen in der Regel wenn das Messagehandlingloop läuft und bei Consolenanwendungen wenn das Programm durchgelaufen ist.

edit
mit call geht es bei mir auch nicht.
Aber versuch mal programm.exe mit "start programm.exe" zu starten.

Geldmann3
2012-08-12, 11:42:52
Nein, das sollte es nicht sein, denn auch so
@echo on
@echo Programm wird in den Autostart kopiert
copy Programm.exe %APPDATA%\Microsoft\Windows\Startmenü\Programme\Autostart\AutoHideTaskbar.exe
@echo Starte Dienst...
start Programm.exe
wird nur das Programm ausgeführt, die Zeile mit copy wird scheinbar übersprungen, obwohl Programm.exe zu dem Zeitpunkt noch nicht ausgeführt wird...

PatkIllA
2012-08-12, 11:46:45
Nein, das sollte es nicht sein, denn auch so
@echo on
@echo Programm wird in den Autostart kopiert
copy Programm.exe %APPDATA%\Microsoft\Windows\Startmenü\Programme\Autostart\AutoHideTaskbar.exe
@echo Starte Dienst...
start Programm.exe
wird nur das Programm ausgeführt, die Zeile mit copy wird scheinbar übersprungen...
Und da kommt keine Ausgabe?
Bei mir geht das schon mal nicht, weil ich ein englisches Windows habe und es den Pfad nicht gibt. Auf deutschen Windows-System wird der Pfad auch nur umgemappt und ist eigentlich englisch.
Auf XP Rechnern wird es nicht gehen, weil %APPDATA% Leerzeichen enthält und der Pfad nicht in Anführungszeichen steht.

Gast
2012-08-12, 12:16:05
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\ ist der Pfad bei Windows 7

Geldmann3
2012-08-12, 12:27:06
Oh, wenn ich am Ende noch
pause
schreibe, steht da beim kopieren, das System könne den Pfad nicht finden, liegt wohl am "ü" .
Doch wie kann ich das umgehen?
Wenn ich in Notepad++ DOS Mode aktiviere wird das ü auch in der Ausgabe richtig dargestellt, doch er findet den Pfad dennoch nicht. Im Explorer kann ich aber Problemlos nach
"%APPDATA%\Microsoft\Windows\Startmenü\Programme\Autostart\" navigieren.

Auch CMD verarscht mich hier dick!!
Wenn ich nach %APPDATA%\ navigieren möchte, sagt es mir,
C:\Users\MeinNutzername>%APPDATA%\
Der Befehl "C:\Users\MeinNutzername\AppData\Roaming\" ist entweder falsch geschrieben
oder
konnte nicht gefunden werden.
Flasch geschrieben, obwohl ich es selbst gar nicht so geschrieben habe? :freak:

Hmmm, ich erinnere mich gerade an sowas. Kann es nicht sein, dass ich einen Parameter hinzufügen muss, um auch mit versteckten Ordnern arbeiten zu können?

Wenn ich mir mit "dir" den Ordnerinhalt zeigen lasse, ist keine Spur von Appdata..

PatkIllA
2012-08-12, 12:29:16
Auch CMD verarscht mich hier dick!!
Wenn ich nach %APPDATA%\ navigieren möchte, sagt es mir,
C:\Users\MeinNutzername>%APPDATA%\
Der Befehl "C:\Users\MeinNutzername\AppData\Roaming\" ist entweder falsch geschrieben
oder
konnte nicht gefunden werden.
Flasch geschrieben, obwohl ich es selbst gar nicht so geschrieben habe? :freak:Der Ordner selbst ist ja auch kein Befehl.
cd %APPDATA%
funktioniert einwandfrei.

Nochmal deutlich: Es gibt keinen Ordner "%APPDATA%\Microsoft\Windows\Startmenü\Programme\Autostart\".
Ab Vista sind alle Systemordner englisch. Die werden mit diversen "Tricks" in der GUI internationalisiert, unter der Haube aber immer englisch.
Unter XP kannst du das in einer Batch gleich gar nicht ordentlich machen, da dort die Ordner in jeder Sprachversion anders heißen. Deshalb gibt es Systemfunktionen, um solche Ordner abzufragen. Hart codierte in irgendwelchen Installern, sind die totale Seuche und eine Garantie dafür, dass es in nicht bedachten Szenarien oder in einer späteren Version nicht mehr gehen.

sei laut
2012-08-12, 12:33:57
Edit: Ok, PatkIllA hat recht.

Gast
2012-08-12, 12:35:50
%APPDATA%\Microsoft\Windows\Startmenü\Programs\Startup

würde dann aber nur auf deutschen Rechnern funktionieren. ;)

Geldmann3
2012-08-12, 12:40:07
Warum wird Appdata mir dir nicht im Benutzerordner angezeigt?
Ich habe auch dir -h probiert, dann kommt nur.
C:\Users\Geldmann3>dir -h
Datenträger in Laufwerk C: ist System
Volumeseriennummer: 68CA-A47E

Verzeichnis von C:\Users\Geldmann3

Datei nicht gefunden

PatkIllA
2012-08-12, 12:40:13
%APPDATA%\Microsoft\Windows\Startmenü\Programs\Startup

würde dann aber nur auf deutschen Rechnern funktionieren. ;)Das würde auch nicht gehen, da es Programme und Autostart wäre. Selbst wenn der Ordner da liegen würde, würde das Programm nicht gestartet.

Und noch mal der Hinweis, dass man ins Startmenü keine executables kopiert sondern Verknüpfungen anlegt.

Als Programm Lösung könnte man noch per Registry starten.

sei laut
2012-08-12, 12:41:20
Natürlich.
Aber ich war auch so blöd und hatte die Pfadangabe genauso wie Geldmann in der GUI getestet. Bin da von Linux anderes gewöhnt. ;(

PatkIllA
2012-08-12, 12:42:49
Warum wird Appdata mir dir nicht im Benutzerordner angezeigt?
Ich habe auch dir -h probiert, dann kommt nur.
C:\Users\Geldmann3>dir -h
Datenträger in Laufwerk C: ist System
Volumeseriennummer: 68CA-A47E

Verzeichnis von C:\Users\Geldmann3

Datei nicht gefundenWeil der Befehl falsch ist:
dir /AH für attribute und hidden und der Slash wird Parametern vorangestellt.

Ich will dir jetzt nicht zu nahe treten, aber wie hast du denn das mit dem ein/ausblenden der Taskleiste und der Mausaktivität gemacht?
Da gibt es auch diverse Fallstricke und ich fürchte du machst anderen Leuten keine Freude damit.

Geldmann3
2012-08-12, 13:00:41
Jetzt funktioniert es.
@echo on
@echo Programm wird in den Autostart kopiert
copy AutoHideTaskbar.exe "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\AutoHideTaskbar.exe"
@echo Starte Dienst...
start AutoHideTaskbar.exe
pause

Ich habe folgende Funktion verwendet um die Taskleiste auszublenden
http://www.vbarchiv.net/tipps/tipp_66-windows-taskbar-ein-ausblenden.html

Dabei bleibt der Startbutton leider vorhanden. Doch das ist eigentlich gar nicht so schlimm. Macht der Benutzer nun 60 Sekunden keine Eingabe wird die Taskleiste entfernt, bewegt er die z.b. Maus, wird sie wieder sichtbar. Man muss sich also keine Sorgen machen, dass sie verschwindet, denn sobald irgendeine Eingabe erfolgt erscheint die Taskleiste wieder. Es sei denn natürlich, das Programm läuft nicht mehr, doch auch das sollte sich mit einem Neustart von Explorer.exe gegessen haben.
Hier mal ein Link dazu: http://riederwald.mine.nu/anonymous/Programme/AutoHideTaskbar.zip

Achtung an User die WindowsXP oder früher verwenden, nicht getestet... Und evtl. nicht funktionsfähig.

Edit: Ok, jetzt unter XP getestet, funktioniert nicht. Die Anwendung bringt die Fehlermeldung:
AutoHideTaskbar.exe - Fehler in Anwendung
Die Anwendung konnte nicht richtig initialisiert werden (0xc0000135). Klicken Sie auf "OK", um die Anwendung zu beenden.
Der Kopiervorgang schlägt ebenfalls fehl:
Das System kann den angegebenen Pfad nicht finden.
0 Datei(en) kopiert.

Doch es ist auch kein Ziel mehr von mir es unter WindowsXP zum Laufen zu bringen. Vista und Windows7 sind genug.

Gast
2012-08-15, 16:48:07
Ich habe folgende Funktion verwendet um die Taskleiste auszublenden
http://www.vbarchiv.net/tipps/tipp_66-windows-taskbar-ein-ausblenden.htmldie Taskleiste ist ein eigenes Fenster mit der Fensterklasse "Shell_TrayWnd", das habe ich auch noch nicht gewusst.