Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   bat-datei commands (https://www.delphipraxis.net/90577-bat-datei-commands.html)

ghost007 19. Apr 2007 21:39


bat-datei commands
 
hallo,
ich will folgedes mit einer bat datei machen, hab aber keine ahnung von der syntax :(

-bestimmte dateien im gleichen ordner der bat datei löschen
-einen zip file in dem ordner der bat datei entpacken
-sich selbst löschen(optional)

MfG - Ghost007

3_of_8 19. Apr 2007 21:44

Re: bat-datei commands
 
Welches Betriebssystem?

Unter Windows/DOS geht das mit "del Dateiname".

Christian Seehase 19. Apr 2007 21:53

Re: bat-datei commands
 
Moin Christian,

%0 entspricht in einer Batchdatei dem paramstr(0) in einem Delphi-Programm

Beispielsweise alle txt-Dateien im Ordner löschen
del %0\..\*.txt

Die Zeile für's entzippen hängt von Deinem Tool ab.

Sich selber löschen
del %0

ghost007 19. Apr 2007 22:13

Re: bat-datei commands
 
Zitat:

Zitat von 3_of_8
Welches Betriebssystem?

Unter Windows/DOS geht das mit "del Dateiname".

Windows ab win95 sollte es gehn.
Zitat:

Zitat von Christian Seehase
Die Zeile für's entzippen hängt von Deinem Tool ab.

hi,
jo, es gibt kein bestimmtes tool, es soll bei jedem laufen, am besten mit dem unzip das was bei windows dabei ist.

MfG - Ghost007

Blackheart 19. Apr 2007 22:17

Re: bat-datei commands
 
Schau mal dort da gibt es einiges darüber.
http://www.administrator.de/index.ph...36a71d9f#75181

Christian Seehase 19. Apr 2007 22:22

Re: bat-datei commands
 
Moin Christian,

Zitat:

Zitat von ghost007
jo, es gibt kein bestimmtes tool, es soll bei jedem laufen, am besten mit dem unzip das was bei windows dabei ist.

das wird nicht gehen können, da es erst sein XP ein eingebautes entzippen gibt.

ghost007 19. Apr 2007 22:28

Re: bat-datei commands
 
hm, ok, andrer ansatz.
gibt es einen command um dateien zu verschieben?
bzw. umzubenennen?
und wie führe ich eine exe-datei aus?

MfG - Ghost007

3_of_8 19. Apr 2007 22:30

Re: bat-datei commands
 
Hast du schonmal an ein einfaches help gedacht? Und Dateien ausführen geht einfach indem man ihren Dateinamen als Kommando eingibt.

zecke 19. Apr 2007 22:36

Re: bat-datei commands
 
:hi:

Zum Thema *.bat könnte der Link helfen: wuppdi

Hansa 19. Apr 2007 23:07

Re: bat-datei commands
 
Mache ein selbstentpackendes Archiv und fertig.

ghost007 19. Apr 2007 23:26

Re: bat-datei commands
 
Zitat:

Zitat von Hansa
Mache ein selbstentpackendes Archiv und fertig.

oh man, du bist genial *g* an sowas habe grad gar net gedacht ... danke ;)

Olli 20. Apr 2007 00:35

Re: bat-datei commands
 
Fuer die erweiterte Syntax "NT Shell Scripting" von Tim Hill (war glaub ich der Name). Habe es nicht hier, liegt noch in Reykjavik. Damit kann man dann so schoene Sachen machen wie mehr als 30kB grosse Skripte :mrgreen: (siehe DDKBUILD)

Wenn es ab Windows 95 gehen soll, wirst du einige Schwierigkeiten bekommen. IMO gab es bei einem dieser fruehen Systeme keinen Switch um DEL mitzugeben, dass es nicht rueckfragen soll. Damals machte man das mit

Code:
echo y|del ...
was leider den Nachteil hatte, dass es sprachabhaengig wurde (statt y ein j auf einem deutschen System).
Wenn du konkretere Fragen stellst, kann ich dir auch helfen, wenn deine Anforderungen fuer Windows 2000 (notfalls auch NT4) und spaeter sind.


Das ausfuehren einer EXE-Datei geht wahlweise mit

Code:
Bla.exe
start Bla.exe
call Bla.exe
START ist ein Befehl des NT Shellskriptinterpreters und erlaubt die Mitgabe bestimmter Parameter wie Prioritaet. Die erste Zeile und die dritte sind sich gleich, solange es ein Programm ist. Wuerdest du eine andere BAT-Datei aufrufen wollen, muesstest du CALL benutzen, weil ansonsten der Interpreter nach dem aufgerufenen Skrit aufhoert. Beispiel:

1.bat
Code:
@echo off
echo %0
2.bat
rem Die folgende Zeile wird nie ausgefuehrt:
echo Test
2.bat
Code:
@echo off
echo %0
... wenn wir jedoch die 1.bat geringfuegig abaendern, funktioniert es wie erwartet:

1.bat
Code:
@echo off
echo %0
call 2.bat
rem Die folgende Zeile wird nun ausgefuehrt:
echo Test
Zitat:

Zitat von Christian Seehase
das wird nicht gehen können, da es erst sein XP ein eingebautes entzippen gibt.

Und selbst das geht doch nicht auf der Kommandozeile, oder habe ich da was verpasst? Das war doch nur eine Explorer-Shellerweiterung, oder?

Zitat:

Zitat von Christian Seehase
Beispielsweise alle txt-Dateien im Ordner löschen
del %0\..\*.txt

Und genau sowas geht unter NT soviel eleganter :mrgreen: ... gebt mal "FOR /?" ein und schaut euch den letzten Teil der Ausgabe an. Da lernt man zumindest ansatzweise was zur Stringsubstitution (besonders Pfadmanipulation). Dito fuer "SET /?".

Uebrigens kannte auch schon DOS den . als das aktuelle Verzeichnis. Folgende Zeile sollte es also auch tun :zwinker:

Code:
del .\*.txt



Das 1x1 des Windowsadmins :lol:

Christian Seehase 20. Apr 2007 09:31

Re: bat-datei commands
 
Moin Olli,

Zitat:

Zitat von Olli
Zitat:

Zitat von Christian Seehase
Beispielsweise alle txt-Dateien im Ordner löschen
del %0\..\*.txt

Und genau sowas geht unter NT soviel eleganter :mrgreen: ... gebt mal "FOR /?" ein und schaut euch den letzten Teil der Ausgabe an. Da lernt man zumindest ansatzweise was zur Stringsubstitution (besonders Pfadmanipulation). Dito fuer "SET /?".

Dann zeig' mir doch bitte mal ein Beispiel, wie Du es anders lösen würdest.

Zitat:

Zitat von Olli
Uebrigens kannte auch schon DOS den . als das aktuelle Verzeichnis. Folgende Zeile sollte es also auch tun :zwinker:

Code:
del .\*.txt

Klar, den . gibt es schon seit DOS, aber wenn vor dem del-Kommando das aktuelle Verzeichnis sich geändert hat, könnte man sich ein Problem einhandeln ;-)

Olli 20. Apr 2007 12:44

Re: bat-datei commands
 
Zitat:

Zitat von Christian Seehase
Dann zeig' mir doch bitte mal ein Beispiel, wie Du es anders lösen würdest.

Ich wuerde einen der Operatoren zur Pfadmanipulation benutzen. Bspw. %~dpVARIABLENNAME% ;) (%~pVARIABLENNAME% reicht hier auch)

Alternativ habe ich auch noch eine mit NT4 kompatible Variante in petto, welche sich hier findet: http://forum.f-prot.com/index.php/topic,243.0.html (muesste aber angepasst werden um statt des letzten Teils den ersten auszugeben).

Aber hier die (IMO) korrektere Variante (mit der Einschraenkung unter dem naechsten Zitat von dir - Stichwort: Kontext):
Code:
set DIR_=%~dp0
del %DIR_%\*.txt
Koennte auch einfach nur "del %DIR_%*.txt" lauten.

Ich sage dir auch, wieso ich denke, dass das korrekter (gibt sicher andere Varianten) ist. ".." bedeutet im Kontext eines Verzeichnisses "das darueberliegende Verzeichnis" - die Skriptdatei ist ja nun aber kein Verzeichnis, folglich ist es semantisch falsch, auch wenn es dank des einprogrammierten Shortcuts "alles bis zum davorliegenden Backslash aus dem Pfad entfernen, falls es dort noch einen Backslash gibt" trotzdem funktioniert.

Kaeme halt drauf an. Ich gehe davon aus, dass ich einen solchen Hack wie du auch anwenden wuerde, wenn es nicht sauber sein muss sondern "einfach nur" funktionieren soll :zwinker:

Zitat:

Zitat von Christian Seehase
Klar, den . gibt es schon seit DOS, aber wenn vor dem del-Kommando das aktuelle Verzeichnis sich geändert hat, könnte man sich ein Problem einhandeln ;-)

Das ist wahr, aber die meisten Programmier- und Skriptsprachen sind modal, der Kontext also relevant. Im uebrigen enthaelt %0 innerhalb einer aufgerufenen Funktion eben auch nicht den Dateinamen des Skripts, sondern den Namen der aufgerufenen Funktion. Hier ist es also ebenso wichtig in welchem Kontext dein Code aufgerufen wird :zwinker:

Beispiel:
Code:
@echo off
call :FUNCTION blablubb
:: Exit script
goto :EOF

:FUNCTION
:: Prints ":FUNCTION"
echo %0
:: Return to caller
goto :EOF

ghost007 20. Apr 2007 16:05

Re: bat-datei commands
 
hi,
hab nu eine bat datei gebastelt, die wie folgt aus sieht:
Code:
@echo off
ping -n 5 localhost
del "Winamp Controller for G15.exe"
del "version.txt"
rename "dummy.exe" "Winamp Controller for G15.exe"
"Winamp Controller for G15.exe"
exit
Hab nu das problem, das sie sich nicht beendet, sondern erst, wenn das programm, welches sie ausfürht, beendet wird.

Alien426 20. Apr 2007 16:45

Re: bat-datei commands
 
Code:
start "Winamp Controller for G15.exe"

Olli 20. Apr 2007 18:22

Re: bat-datei commands
 
Zitat:

Zitat von Alien426
Code:
start "Winamp Controller for G15.exe"

Stimmt, aber gab es das schon in Windows 95?

Hansa 20. Apr 2007 18:41

Re: bat-datei commands
 
Win 95 ? Sage eher : DOS 3 :mrgreen: Es gilt : Programmname <Parameter> :stupid:

Olli 20. Apr 2007 20:37

Re: bat-datei commands
 
Zitat:

Zitat von Hansa
Win 95 ? Sage eher : DOS 3 :mrgreen: Es gilt : Programmname <Parameter> :stupid:

Ach ja? Ist mir neu. Meines Erachtens nach wurde der Befehl START erst mit NT eingeführt, sprich mit CMD.EXE! Definitiv existierte es nicht in DOS 3.0! Jedoch weiß ich es nicht mit Sicherheit für Windows 9x/Me.

Vielleicht hätte es sich gelohnt den Beitrag #15 durchzulesen?!

Nachtrag: okay, es existierte ab Windows 95.

ghost007 21. Apr 2007 19:07

Re: bat-datei commands
 
also,
irwie funktioniert das mit start nicht .... :( er macht einfach gar nix ... und wenn ich nur den dateiname eingeb, geht ein cmd fenstern mit titel = dateiname auf und es passiert nichts :(

Olli 22. Apr 2007 00:05

Re: bat-datei commands
 
Okay, fuege uns doch hier nochmal dein Skript so ein, wie es jetzt aktuell ist. Blindschuesse sind hier wohl etwas sinnfrei.

J.P. 22. Apr 2007 09:27

Re: bat-datei commands
 
Guten Morgen!

Naja.
Es gibt da manchmal ein Problem mit start, und zwar wird der erste Parameter (sofern in "" angegeben) als ordner (und titel) genutzt, zu dem gewechselt und das programm ausgeführt wird. Dann muss man einfach den Pfad nochmal dahinter setzen (auch in "").


Worauf ich hier jetzt noch drauf hinweisen möchte:
JPsBatchGeneratorPro
Ein von mir geschriebenes Tool, dass dir auf Mausklick Batch-Dateien zusammenstellt. Du musst nur die entsprechenden Buttons klicken, und abspeichern. MfG J.P.

edit 1-3: eine inhaltliche Korrektur, hatte ausversehen nur die erste Seite dieses threads gesehen.

ghost007 22. Apr 2007 10:08

Re: bat-datei commands
 
Bat-datei content:

Code:
@echo off
ping -n 5 localhost
del "Winamp Controller for G15.exe"
del "version.txt"
rename "dummy.exe" "Winamp Controller for G15.exe" //bis hier geht alles gut
start "Winamp Controller for G15.exe" //die Zeile macht probleme
del %0
Und hier tritt dann der beschriebene fehler auf.

J.P. 22. Apr 2007 10:48

Re: bat-datei commands
 
Wie schon geschrieben, verdoppele den Pfad mal.
Delphi-Quellcode:
start "Winamp Controller for G15.exe" "Winamp Controller for G15.exe"
del <namederdatei>.bat
So wie ich es eben schon beschrieben hatte. :!:
MfG J.P.

ghost007 22. Apr 2007 13:24

Re: bat-datei commands
 
hm, jetzt startet er es 2mal o.O

J.P. 22. Apr 2007 15:36

Re: bat-datei commands
 
Probiers doch einfach mal mit meinem BatchGenerator (link siehe oben)

ghost007 22. Apr 2007 16:08

Re: bat-datei commands
 
gut, habs nun ... danke :)
er hat es nicht 2mal gestartet ... sondern meine application ignoriert im code die zeile "Form1.Close;" irgendwie -.-

ghost007 22. Apr 2007 17:28

Re: bat-datei commands
 
hm, frage, wie kann ich ein programm per befehl in der bat datei beenden?
oder geht das gar nicht?

MfG - Ghost007

OldGrumpy 22. Apr 2007 17:46

Re: bat-datei commands
 
AFAIK nicht mit Bordmitteln, sowas wie Kill unter *nix gibts bei Windows leider nicht, aber ein gut sortierter Werkzeugkasten könnte z.B. die Tools von SysInternals beinhalten die per Kommandozeile ne ganze Menge machen können.

Christian Seehase 22. Apr 2007 18:06

Re: bat-datei commands
 
Moin Oldgrumpy,

zumindest unter XP sollte es auch mit Bordmitteln gehen, denn dort gibt es das Tool Taskkill.

OldGrumpy 22. Apr 2007 18:21

Re: bat-datei commands
 
Aber ebenso wie Tasklist und einige andere nur in der Professional... XP Home das fast überall vorinstalliert beim PC dabei ist, kennt diese Tools nicht.

himitsu 22. Apr 2007 19:12

Re: bat-datei commands
 
oder man richtes dieses in sein Programm mit ein ... also das dieses eine andere Instanz von sich beendet, wenn es mit einem bestimmten Parameter aufgerufen wurde.
Dieses wäre auch besser, da so das gewünschte Programm sich "ordnungsgemäß" beendet könnte.

Olli 22. Apr 2007 23:28

Re: bat-datei commands
 
Vielleicht koennte man ja Hansas Beitrag (#10) nochmal aufgreifen. NSIS (Nullsoft Installer) waere hier IMO eine tolle Sache um all das schoen plattformuebergreifend und kompakt zu erledigen. Nur weil es "Installer" heisst, sollte man es nicht unterschaetzen.

Lesestoff: http://www.simmack.de/tutorials/ (Inno Setup & NSIS)

SirThornberry 23. Apr 2007 06:16

Re: bat-datei commands
 
und wo liegt das tool? wenn ich auf der commandozeile taskkill eingebe bekomme ich die Meldung das der Befehl ungültig ist bzw. das Programm nicht gefunden wurde.

Olli 23. Apr 2007 08:56

Re: bat-datei commands
 
Code:
Verzeichnis von C:\WINDOWS\system32

2004-08-04  12:00            74.240 taskkill.exe
2004-08-04  12:00            73.728 tasklist.exe
2004-08-04  12:00            15.872 taskman.exe
2004-08-04  12:00           140.800 taskmgr.exe


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz