Delphi-PRAXiS
Seite 2 von 4     12 34      

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 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 :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 Uhr.
Seite 2 von 4     12 34      

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