batch-Problem
hurz
- sonstiges
0 Vinzenz Mai0 Hurz0 Vinzenz Mai0 Hurz0 Hurz0 Vinzenz Mai
0 Der Martin0 Vinzenz Mai0 Der Martin0 seth
0 seth
Hallo,
Ich möchte eine Batch-Datei basteln und nutze dazu die Variablen
%1% und %CD%
"Droppe" Ich mit DragnDrop eine Datei auf die Batch-Datei ist %CD% plötzlich ein ganz anderer Pfad wie wenn ich die Datei direkt anklicke!
Woran liegt das und wie bekomme ich das in den Griff?
Hurz
Hallo
Ich möchte eine Batch-Datei basteln
warum und wozu? Warum nicht Windows Scripting Host oder Powershell?
und nutze dazu die Variablen
%1% und %CD%
"Droppe" Ich mit DragnDrop eine Datei auf die Batch-Datei ist %CD% plötzlich ein ganz anderer Pfad wie wenn ich die Datei direkt anklicke!
Welchen Wert erwartest Du? Welchen Wert erhälstst Du?
Freundliche Grüße
Vinzenz
Hey
warum und wozu? Warum nicht Windows Scripting Host oder Powershell?
Kenn ich nicht.. Sind die auch direkt mit Windows dabei?
%CD%
"Droppe" Ich mit DragnDrop eine Datei auf die Batch-Datei ist %CD% plötzlich ein ganz anderer Pfad wie wenn ich die Datei direkt anklicke!
Welchen Wert erwartest Du? Welchen Wert erhälstst Du?
C:\Dokumente und Einstellungen\MeinName erhalte ich wenn ich eine Datei Droppe
und Erwarten tu ich den Aktuellen Pfad worüber die Batch-Datei aufgerufen wird.
Hurz
Hallo
warum und wozu? Warum nicht Windows Scripting Host oder Powershell?
Kenn ich nicht.. Sind die auch direkt mit Windows dabei?
Windows Scripting Host ist seit Windows 2000 dabei, für 98, Me und NT 4.0 nachrüstbar. Programmierbar unter anderem in JScript, VBScript (Buildin), Python (nachrüstbar). Powershell ist der Nachfolger und gibts für XP und Vista zum Nachrüsten. Hab' ich noch nicht benutzt.
%CD%
"Droppe" Ich mit DragnDrop eine Datei auf die Batch-Datei ist %CD% plötzlich ein ganz anderer Pfad wie wenn ich die Datei direkt anklicke!Welchen Wert erwartest Du? Welchen Wert erhälstst Du?
C:\Dokumente und Einstellungen\MeinName erhalte ich wenn ich eine Datei Droppe
siehste, ich erhalte P:\ und die Batchdatei liegt auf dem Desktop.
und Erwarten tu ich den Aktuellen Pfad worüber die Batch-Datei aufgerufen wird.
und was verstehst Du darunter?
Freundliche Grüße
Vinzenz
Hi,
und was verstehst Du darunter?
Also hab das grad auch mal aufm Desktop getestet und da gehts.. Es scheint so das es nur in den C:\Dokumente und Einstellungen\MeinName...\ - Verzeichnissen Funktioniert
Denn im
C:\Programme\xampp\htdocs\eclipse\abc\
Funktioniert es nicht.. Sehr merkwürdig!
Hier mal meine Bacthfile:
@echo off
set path=%CD%
echo %path%
pause
Wie gesagt wenn ich das Batch-File mit einem Doppelklick aufrufe dann erscheint das gewünschte ergebnis:
C:\Programme\xampp\htdocs\eclipse\abc\
Droppe ich irgendeine Datei dann steht da plötzlich
C:\Dokumente und Einstellungen\MeinName\
Hurz
Kann mir keiner bei einem so (scheinbar) einfachen Problem helfen?
Hurz :-/
Hallo
Denn im
C:\Programme\xampp\htdocs\eclipse\abc\ Funktioniert es nicht.. Sehr merkwürdig!
"Funktioniert nicht" ist keine Fehlerbeschreibung!
Was wird ausgegeben?
Hier mal meine Bacthfile:
@echo off
REM Das ist wirklich überhaupt keine gute Idee:
set path=%CD%
REM Willst Du das "aktuelle Verzeichnis" an den Pfad anhängen?
REM Dann:
SET PATH=%PATH%;%CD%
REM Wenn nicht, was bitte möchtest Du?
echo %path%
pause
Code ohne vernünftige Kommentare ist miserabler Code.
Code, der in einem Forum präsentiert wird, sollte eher mehr Kommentare aufweisen als Quellcode. Ja, eine nette Form spricht auch für sich und macht Code lesbarer.
Du weißt im Moment, was Du vorhast. Der potentielle Helfer weiß es nicht.
Jemand, der Hilfe haben möchte, sollte dem Helfer keine Hindernisse in den Weg stellen, sondern nach Möglichkeit Hindernisse entfernen. Dabei kann es sein, dass man durch das Wegräumen der Hindernisse bereits die Lösung findet, noch bevor man seine Frage abgeschickt hat.
Wie gesagt wenn ich das Batch-File mit einem Doppelklick aufrufe dann erscheint das gewünschte ergebnis:
C:\Programme\xampp\htdocs\eclipse\abc\ Droppe ich irgendeine Datei dann steht da plötzlich
C:\Dokumente und Einstellungen\MeinName\
Und warum auch nicht?
Ich verstehe immer noch nicht, was Du willst. Ich weiß nicht, was Dein Batchdatei bewirken _sollte.
Freundliche Grüße
Vinzenz
Hallo Vinzenz,
Windows Scripting Host ist seit Windows 2000 dabei, für 98, Me und NT 4.0 nachrüstbar.
der war sogar bei Win98 schon dabei (ich habe ihn bei der Installation immer bewusst abgewählt, weil er per Defaulteinstellung mit installiert wurde). Bei 98SE bin ich mir nicht sicher, ebensowenig bei ME; diese Versionen habe ich nur sehr selten in der Hand gehabt.
%CD%
Enthält das Arbeitsverzeichnis, also das Verzeichnis, das im Kontext der Batchdatei als "aktuelles Verzeichnis" gilt.
"Droppe" Ich mit DragnDrop eine Datei auf die Batch-Datei ist %CD% plötzlich ein ganz anderer Pfad wie wenn ich die Datei direkt anklicke!
Ja, Hurz: Wenn du eine Batchdatei per Doppelklick startest, wird das Verzeichnis, in dem sie liegt, ihr aktuelles Arbeitsverzeichnis. Rufst du sie von der Kommandozeile auf, stimmt das schon nicht mehr unbedingt; rufst du sie über eine Drop-Aktion aus dem Windows-Explorer auf, dann erst recht nicht.
Ich bin mir nicht sicher, ob beim Drop das Arbeitsverzeichnis überhaupt eindeutig festgelegt ist; ich hab's mit meinem Windows 2000 eben versucht: Die Datei liegt auf dem Desktop (E:\Profile\Desktop) und gibt mir C:\ als %cd% aus.
siehste, ich erhalte P:\ und die Batchdatei liegt auf dem Desktop.
Das deutet stark darauf hin, dass der Wert von System zu System, vielleicht sogar von Aufruf zu Aufruf unterschiedlich ist.
und Erwarten tu ich den Aktuellen Pfad worüber die Batch-Datei aufgerufen wird.
und was verstehst Du darunter?
Vermutlich das Verzeichnis, in dem die Batchdatei liegt. Den kompletten Namen der Batchdatei hat man ja in %%0 - gab's da nicht auch was, womit man die Pfadinformation daraus isolieren kann?
So long,
Martin
Hallo Martin,
Ich bin mir nicht sicher, ob beim Drop das Arbeitsverzeichnis überhaupt eindeutig festgelegt ist; ich hab's mit meinem Windows 2000 eben versucht: Die Datei liegt auf dem Desktop (E:\Profile\Desktop) und gibt mir C:\ als %cd% aus.
Welche Werte haben bei Dir die Umgebungsvariablen
- HOMEDRIVE
- HOMEPATH
sofern existent?
siehste, ich erhalte P:\ und die Batchdatei liegt auf dem Desktop.
Das deutet stark darauf hin, dass der Wert von System zu System, vielleicht sogar von Aufruf zu Aufruf unterschiedlich ist.
und Erwarten tu ich den Aktuellen Pfad worüber die Batch-Datei aufgerufen wird.
und was verstehst Du darunter?Vermutlich das Verzeichnis, in dem die Batchdatei liegt.
Das vermute ich zwar auch, aber - verdammt noch mal - genau das frage ich schon von Anfang an. Ich hätte gerne eine Bestätigung.
Warum möchte der OP den Suchpfad in der aktuellen Instanz des Kommandozeileninterpreters auf dieses eine Verzeichnis reduzieren?
Für die Geschwindigkeit der Ausführung? Das gewünschte Verzeichnis einfach vorne einfügen.
Durch diese Aktion sind gegebenenfalls x andere Anweisungen mit kompletten Pfadangaben zu machen. Den Grund dafür hätte ich gerne gewußt.
Den kompletten Namen der Batchdatei hat man ja in %%0
Eben. %CD% _dafür_ zu nehmen, ist, hmm, unangebracht
- gab's da nicht auch was, womit man die Pfadinformation daraus isolieren kann?
mit for sollte das gehen.
help for
(oder eine Archivsuche nach author:seth for)
Freundliche Grüße
Vinzenz
Hallo Vinzenz,
Die Datei liegt auf dem Desktop (E:\Profile\Desktop) und gibt mir C:\ als %cd% aus.
Welche Werte haben bei Dir die Umgebungsvariablen
- HOMEDRIVE
- HOMEPATH
sofern existent?
hast einen guten Riecher gehabt:
C:>set
...
HOMEDRIVE=C:
HOMEPATH=\
...
Warum möchte der OP den Suchpfad in der aktuellen Instanz des Kommandozeileninterpreters auf dieses eine Verzeichnis reduzieren?
Ich glaube nicht, dass er das möchte - ich vermute vielmehr, dass ihm die Bedeutung der Umgebungsvariable %PATH% nicht klar ist.
Den kompletten Namen der Batchdatei hat man ja in %%0
Eben. %CD% _dafür_ zu nehmen, ist, hmm, unangebracht
*g*
- gab's da nicht auch was, womit man die Pfadinformation daraus isolieren kann?
mit for sollte das gehen.
Ah, gut. Ich hatte im Moment keinen Schimmer, wonach ich suchen musste. Ich selbst habe %~pVAR auch noch nie verwendet; nur eine Stimme im Hinterkopf sagte mir, "Da gibt's doch auch was von Ratioph ..." - äh nee, falsches Märchen. ;-)
Schönen Abend noch,
Martin
gudn tach!
Für die Geschwindigkeit der Ausführung? Das gewünschte Verzeichnis einfach vorne einfügen.
wenn er die andern pfade nicht braucht, kann er sie ja einfach aus %path% loeschen; spart tipparbeit. und wenn das batch-file eh nur per maus aufgerufen wird, ist das ohnehin bloss eine temporaere geschichte (und mit setlocal waer's das auch im cli).
Den Grund dafür hätte ich gerne gewußt.
vielleicht meldet sich ja hurz noch mal.
mit for sollte das gehen.
geht sogar ohne. (siehe anderes posting von mir.)
prost
seth
gudn tach!
und Erwarten tu ich den Aktuellen Pfad worüber die Batch-Datei aufgerufen wird.
und was verstehst Du darunter?Vermutlich das Verzeichnis, in dem die Batchdatei liegt. Den kompletten Namen der Batchdatei hat man ja in %%0 - gab's da nicht auch was, womit man die Pfadinformation daraus isolieren kann?
vorsicht, in %%0 nicht, sondern in %0 (auch in batchfiles). die doppelten % sind dazu da, um einfache % zu maskieren, z.b. in schleifen.
der pfad des ausgefuehrten scripts, steht in %~dp0, also z.b.
echo %~dp0
oder
set pfad=%~dp0
prost
seth