AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

bat-datei commands

Ein Thema von ghost007 · begonnen am 19. Apr 2007 · letzter Beitrag vom 23. Apr 2007
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#11

Re: bat-datei commands

  Alt 19. Apr 2007, 23:26
Zitat von Hansa:
Mache ein selbstentpackendes Archiv und fertig.
oh man, du bist genial *g* an sowas habe grad gar net gedacht ... danke
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#12

Re: bat-datei commands

  Alt 20. Apr 2007, 00:35
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 (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 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 von Christian Seehase:
Beispielsweise alle txt-Dateien im Ordner löschen
del %0\..\*.txt
Und genau sowas geht unter NT soviel eleganter ... 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

Code:
del .\*.txt



Das 1x1 des Windowsadmins
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: bat-datei commands

  Alt 20. Apr 2007, 09:31
Moin Olli,

Zitat von Olli:
Zitat von Christian Seehase:
Beispielsweise alle txt-Dateien im Ordner löschen
del %0\..\*.txt
Und genau sowas geht unter NT soviel eleganter ... 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 von Olli:
Uebrigens kannte auch schon DOS den . als das aktuelle Verzeichnis. Folgende Zeile sollte es also auch tun

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
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#14

Re: bat-datei commands

  Alt 20. Apr 2007, 12:44
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

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

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

:FUNCTION
:: Prints ":FUNCTION"
echo %0
:: Return to caller
goto :EOF
  Mit Zitat antworten Zitat
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#15

Re: bat-datei commands

  Alt 20. Apr 2007, 16:05
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.
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  Mit Zitat antworten Zitat
Benutzerbild von Alien426
Alien426

Registriert seit: 21. Dez 2005
146 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: bat-datei commands

  Alt 20. Apr 2007, 16:45
Code:
start "Winamp Controller for G15.exe"
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#17

Re: bat-datei commands

  Alt 20. Apr 2007, 18:22
Zitat von Alien426:
Code:
start "Winamp Controller for G15.exe"
Stimmt, aber gab es das schon in Windows 95?
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#18

Re: bat-datei commands

  Alt 20. Apr 2007, 18:41
Win 95 ? Sage eher : DOS 3 Es gilt : Programmname <Parameter>
Gruß
Hansa
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#19

Re: bat-datei commands

  Alt 20. Apr 2007, 20:37
Zitat von Hansa:
Win 95 ? Sage eher : DOS 3 Es gilt : Programmname <Parameter>
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.
  Mit Zitat antworten Zitat
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#20

Re: bat-datei commands

  Alt 21. Apr 2007, 19:07
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
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:22 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