Batch - Neues Fenster im Quellverzeichnis

Hallo zusammen,

ich hoffe ich kann mich richtig und verständlich ausdrücken - eigentlich ist das Problem nicht sehr schwer.

Habe ich unter Windows XP die Möglichkeit, dass eine Batch-Datei nach Doppelklick nicht im Rootverzeichnis, sondern im Quellverzeichnis der Batch ausgeführt wird.

Anschaulich:
Wenn ich sie durch Doppelklick starte, soll sie nicht unter C:, sondern unter C:\abc\def\ gestartet werden - eben dort, wo die Batch liegt.

Ausschlussverfahren:
Nein, ich will die Batch nicht in der Eingabeaufforderung ausführen.
Nein, ich will das Verzeichnis nicht über einen Paramter übergeben.

Die Frage ist, ob es möglich ist, das über eine Windows-Einstellung zur bewerkstelligen oder ob es einfach nicht möglich ist.

Viele Grüße
Tom

hallo Huwy,

du könntest die Batch-Datei über eine Verknüpfung starten. In den Eingeschaften der Verknüpfung trägst du unter „Ausführen in“ das Verzeichnis der Batch-Datei ein.

Gruß, Andreas

Hi Andreas,

danke für die Anmerkung - habe ich vergessen zu erwähnen. Das hab ich selbst schon ausprobiert und das würde auch mit

%~d0%~p0

zu Beginn der Batch funktionieren.

Das Problem hierbei ist, dass es fehlschlägt, wenn ein Ordnername ein Leerzeichen enthält.
Und wie du dir vielleicht denken kannst, werden Ordner und Ordnernamen nicht immer so gepflegt, dass sie keine Leerzeichen enthalten.

Ich werde das ganze wahrscheinlich auch nicht immer persönlich ausführen und deswegen wäre es gut, wenn die Batch und die benötigte Datei in einem Ordner liegen und diese einfach ausgeführt werden könnten, ohne große Änderungen.

Viele Grüße
Tom

Was ist denn genau dein Problem? Üblicherweise wird eine per Doppelklick gestartet Batch im Quellverzeichnis ausgeführt; um z. B. eine Datei innerhalb dieses Quellverzwichnisses zu manipulieren, ist es nicht erforderlich, ihren qualifizierten Namen anzugeben.

%~d0%~p0

[…]

Das Problem hierbei ist, dass es fehlschlägt, wenn ein
Ordnername ein Leerzeichen enthält.

Dafür gibts Gänsefüßchen: „%~d0%~p0“

HTH

Danke - hat jetzt funktioniert. Auch wenn es nicht das gewünscht Ergebnis ist - solange es läuft.

Allerdings wird bei mir eine Batch immer im Rootverzeichnis gestartet und nicht im Quellverzeichnis.

Allerdings wird bei mir eine Batch immer im Rootverzeichnis
gestartet und nicht im Quellverzeichnis.

Mir ist beim besten Willen nicht verständlich, was du damit meinst. Wenn das so wäre - wie kämen denn die Variablen %~d0%~p0 dann auf ihren korrekten Wert?

Wenn du z. B. eine Batchdatei in irgendeinem untergeordneten Verzeichnis mit dem einzigen Befehl „dir > test.txt“ per Doppelklick aus dem Explodierer heraus aufrufst - entsteht die test.txt dann tatsächlich in der Root und entspricht ihr Inhalt dem Inhaltsverzeichnis der Root? Wenn ja - welches Windows verwendest du genau?

Gruß

Wenn du z. B. eine Batchdatei in irgendeinem untergeordneten
Verzeichnis mit dem einzigen Befehl „dir > test.txt“ per
Doppelklick aus dem Explodierer heraus aufrufst - entsteht die
test.txt dann tatsächlich in der Root und entspricht ihr
Inhalt dem Inhaltsverzeichnis der Root? Wenn ja - welches
Windows verwendest du genau?

Hello again!

Mach mich nicht schwach - irgendwie fühl ich mich so langsam richtig blöd :wink:

Das passiert bei mir. Und der Inhalt entspricht auch dem „dir“ des Rootverzeichnisses. Und ich dachte, das wär die Regel!?

Benutze hier Windows XP Pro 32Bit - also nichts besonders.

VG

Das passiert bei mir. Und der Inhalt entspricht auch dem „dir“
des Rootverzeichnisses. Und ich dachte, das wär die Regel!?

Dann muss das irgendwo einstellbar sein, denn bei mir sieht das anders aus - ebenfalls unter xp 32. Aber frag mich nicht wo…

Gruß

Hallo Tom,

eigentlich ist das Problem nicht sehr schwer.

ganz genau weiß man das immer erst dann wenn es gelöst ist und man den Aufwand für die Lösung begutachten kann.

Habe ich unter Windows XP die Möglichkeit, dass eine
Batch-Datei nach Doppelklick nicht im Rootverzeichnis, sondern
im Quellverzeichnis der Batch ausgeführt wird.

Sorry. Du hast weiter unten geschrieben daß du wegen des Problems langsam blöd wirst o.ä.
Ich sehs so, je mehr ich in dieser Beitragsfolge mitgelesen habe desto mehr verstehe ich nur noch das Gebäude an dem die Bahhofsuhr hängt :smile:

Ic habe Batches schon geschrieben zu Dos3.1 Zeiten.
Meines Wissens hat sich auch durch die von Bill gates bei Apple geklaute Fenstertechnik, nennt man glaub Windows nix geändert.

Wenn in einer batch steht:
dir
Oder
xcopy *.* C:\sicherung

so bezieht sich das meines Wissens nach Immer auf das grad aktuelle Verzeichnis.
D.h. um das für das Wurzelverzeichnis zu tun muß man explizit das auch ansagen:

Dir c:\
xcopy c:*.* C:\sicherung
von mir aus auch
xcopy c:*.* C:\sicherung*.* (hab sehr lange nicht mehr gebatched *gg*)

Und ich habe auch WinXP, frag mich nicht 32 oder 64 Bit, ich wußt mal wo ich das auslesen könnte, leider vergessen wo/wie, halt das aber hier für unwichtig.

Wie auch immer, du hast da ein Problem was ich nicht nachvollziehen kann.

Mein Fazit ist, bei deinem Windows ist irgendwas seltsam.
Ich hörte noch nie von einer Einstellung wo man anhaken kann daß alle .Bat-Programme als „Arbeitsverzeichnis“ das Wurzelverzeichni, meist C: haben könnten.

Um da irgendwie mal vorwärtszukommen, bastle mal so eine kleine .Bat.
Zeige hier die Befehle und beschreibe welches verzeichnis da ausgelesen/angesprochen wird.
Dann teste ich das gerne mal hier bei mir. Bzw. andere hier auch.

Dann schauen wir vielleicht besser durch äh weiter.

Gruß
Reinhard

Hi Reinhard,

wir hatten das Thema schon weiter unten.

dir > test.txt

Diese Batch führt den „dir“ im Rootverzeichnis aus und schreit mir eben diesen in die test.txt. Normalerweise sollte aber der „dir“ in dem Verzeichnis ausgeführt werden, in dem die Batch liegt - zumindest nach Aussage meines Gesprächskollegen im anderen Baum. Die Batch kannst du denk ich auch mal innerhalb von 2min bei dir testen oder?

Ich habe mich gestern nach der Arbeit etwas umgehört. Angelich soll diese Einstellung in den Umgebungsvariablen liegen. Ich habe mich dort etwas umgesehen, aber konnte bis jetzt noch nichts finden - werde mich aber noch etwas weiter damit beschäftigen :smile:

Viele Grüße
Tom

Wie oben geschrieben - Stichwort Umgebungsvariablen :wink:
Ist aber auch nur die Aussage eines Bekannten. Deswegen nicht zu 100% sicher.

Hallo Tom,

dir > test.txt

Diese Batch führt den „dir“ im Rootverzeichnis aus und schreit
mir eben diesen in die test.txt. Normalerweise sollte aber der
„dir“ in dem Verzeichnis ausgeführt werden, in dem die Batch
liegt - zumindest nach Aussage meines Gesprächskollegen im
anderen Baum. Die Batch kannst du denk ich auch mal innerhalb
von 2min bei dir testen oder?

hab ich getan, wie von mir erwartet wird das verzeichnis ausgelesen wo die .bat selbst drin steht.

Ich habe mich gestern nach der Arbeit etwas umgehört. Angelich
soll diese Einstellung in den Umgebungsvariablen liegen.

Schau mal über den Set Befehl nach einer Umgebungsvariablen dircmd.
Bei mir ist sie nicht gesetzt.

Gruß
Reinhard

Schau mal über den Set Befehl nach einer Umgebungsvariablen
dircmd.
Bei mir ist sie nicht gesetzt.

Aloha!

„dircmd“ legt meines Wissens nur Einstellungen für den „dir“-Befehl selbst fest. Das hat nichts mit dem Ausführungsort der Batch zu tun.

Auf jeden Fall ist sie bei mir auch nicht definiert :smile:

Grüßle

1 Like

Hallo Tom,

Schau mal über den Set Befehl nach einer Umgebungsvariablen
dircmd.

„dircmd“ legt meines Wissens nur Einstellungen für den
„dir“-Befehl selbst fest. Das hat nichts mit dem
Ausführungsort der Batch zu tun.

scheint leider so zu sein wie du sagst.

Auf jeden Fall ist sie bei mir auch nicht definiert :smile:

Dann mach mal
Set > C:\test\set.txt

und zeige mal was da bei dir drin steht, dann kann ich oder andere es mit ihren Sets vergleichen.
Vielleicht erkennt man ja irgendwas und kann das testen.

Gruß
Reinhard

Hallo Tom,

entweder nimmste anstatt gleich eine dirr.vbs o.ä.

Oder, früher ging das, konnte man Kollegen mit veräppeln, da mußte man nur in der Command.com nach „dir“ zu suchen und die drei Buchstaben durch drei andere ersetzen.
Dann hat man eine dir.bat erstellt. Bei der Eingabe von dir beim prompt wurde dann die dir.bat ausgeführt :smile:
Dir.bat mußte im Wurzelverzeihnis stehen, oder wars System?
Egal, muß nur im PATH von SET drinstehen.

Jetzt könnte ja in der Dir.bat der Aufruf einer .vbs o.ä. stehen.

Geht natürlich nur wenn das mit der cmd genauso geht wie mit der Command.com, k.A.

Gruß
Reinard

ALLUSERSPROFILE=C:\Documents and Settings\All Users
APPDATA=C:\Documents and Settings\blabla\Application Data
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=gaaanz\_geheim
ComSpec=C:\WINDOWS\system32\cmd.exe
COPLIB=C:\Program Files\NCR\Teradata Client\cliv2\
DataConnectorLibPath=C:\Program Files\NCR\Teradata Client\bin\
DEFLOGDIR=C:\Documents and Settings\All Users\Application Data\McAfee\DesktopProtection
FP\_NO\_HOST\_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Documents and Settings\blabla
LOGONSERVER=\\SVR\_blubb2
NUMBER\_OF\_PROCESSORS=2
OS=Windows\_NT
Path=C:\Program Files\NCR\Common Files\Shared ICU Libraries for Teradata\lib;C:\Program Files\NCR\Teradata Client\bin\;C:\Program Files\NCR\Teradata Client\bin\;C:\Program Files\NCR\Teradata Client\cliv2\;C:\Perl\site\bin;C:\Perl\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Resource Kit\;C:\Program Files\ManageSoft\Common;C:\Program Files\IDM Computer Solutions\UltraEdit\
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR\_ARCHITECTURE=x86
PROCESSOR\_IDENTIFIER=x86 Family 6 Model 23 Stepping 6, GenuineIntel
PROCESSOR\_LEVEL=6
PROCESSOR\_REVISION=1706
ProgramFiles=C:\Program Files
PROMPT=$P$G
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\DOCUME~1\SCHWAR~1\LOCALS~1\Temp
TMP=C:\DOCUME~1\SCHWAR~1\LOCALS~1\Temp
USERDNSDOMAIN=HQ.auch\_blubb.NET
USERDOMAIN=DOM\_blubb
USERNAME=blabla
USERPROFILE=C:\Documents and Settings\blabla
VBOX\_INSTALL\_PATH=C:\Program Files\Sun\VirtualBox\
VSEDEFLOGDIR=C:\Documents and Settings\All Users\Application Data\McAfee\DesktopProtection
windir=C:\WINDOWS

Hello :smile:

Damit könntet ihr mal vergleichen.

Und zu deinem anderen Hinweis - klar, könnte ich auch ein VBS schreiben, aber es drückt mich jetz allein schon deswegen, da es bei euch anders läuft als bei mir. Und dafür muss es ja irgendeine Einstellung geben - vor allem wenn wir das gleiche Betriebssystem haben.
Da ist der Wissenshunger einfach zu groß :smile:

VG

Hallo Tom,

tja, zu spät das mit dem Nachnamen, Computernamen usw. :smile:)

Leider ist mein Drucker grad nicht einsatzfähig, sonst würde ich mir beide Sets ausdrucken und per Kugelschreiberwegstreichungen das wegstreichen was in beiden Sets ist usw.

Nachfolgend mein Set-Ausdruck.

Und zu deinem anderen Hinweis - klar, könnte ich auch ein VBS
schreiben, aber es drückt mich jetz allein schon deswegen, da
es bei euch anders läuft als bei mir. Und dafür muss es ja
irgendeine Einstellung geben - vor allem wenn wir das gleiche
Betriebssystem haben.
Da ist der Wissenshunger einfach zu groß :smile:

Erstens kenne ich diesen Hunger, da forsche ich lieber tagelang nach bevor ich da Alternativen wie VBS o.ä. benutze.
Denn eines ist glaub zum jetzigen Zeitpunkt völlig unklar, ist nur der dir-Befehl davon betroffen oder auch andere Batchbefehle.

Einzig klar ist m.E. nur, bei „dir“ läuft dir anders als woanders und auch anders als ich es Jahrzehntelang kenne.

Sorry, hab grad keine Lust die ganze Beitragsfolge durchzulesen, in welchem Verzeichnis steht denn die .bat wenn sie aufgerufen wird?
Und wie erfolgt der Aufruf/Start genau?
Mit WinExplorer ins Verzeichnis dann dort die .bat durch Doppelklick starten?
Oder steht sie auf dem Desktop und wird von dort gestartet?

Hast du sowas wie Drive-Image o.ä. am Laufen, also irgendein Programm was in die Lw- und Verzeichnisstruktur eingreifen könnte.

Mir gehen langsam die Ideen aus, aber um ganz auf Sicher zu gehen, gehe aus dem Internet, also Offline. Dann deaktiviere alles was unnötig ist, Virenwächter, Firewalls usw.
Seh zwar keinen großen Sinn darin in dem Fall, aber der Teufel steckt im Detail…

Gruß
Reinhard

??? bedeutet geschwärzt.

ALLUSERSPROFILE=C:\Dokumente und Einstellungen\All Users.WINDOWS
APPDATA=C:\Dokumente und Einstellungen???\Anwendungsdaten
CLIENTNAME=Console
CommonProgramFiles=C:\Programme\Gemeinsame Dateien
COMPUTERNAME=???
ComSpec=C:\WINDOWS\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Dokumente und Einstellungen\ich2
LOGONSERVER=\???
NUMBER_OF_PROCESSORS=1
OS=Windows_NT
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\PROGRA~1\MICROS~2\Office
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 15 Model 1 Stepping 2, GenuineIntel
PROCESSOR_LEVEL=15
PROCESSOR_REVISION=0102
ProgramFiles=C:\Programme
PROMPT=$P$G
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\DOKUME~1???\LOKALE~1\Temp
TMP=C:\DOKUME~1?\LOKALE~1\Temp
USERDOMAIN=R-K5C4ENCRZC23D
USERNAME=???
USERPROFILE=C:\Dokumente und Einstellungen???
windir=C:\WINDOWS

Hi Reinhard,

jaaaaa ich weiß - wollte auf Vorschau und dann auskommentieren, aber natürlich poste ich sofort :wink:

Die Original-Batch ist nur ein bteq-Aufruf.

call bteq logfile.log

Ergo brauch ich das Verzeichnis nur, weil das Statement im gleichen Ordner liegt, wie die Batch. Die zwei können aber auf verschiedenen Rechnern immer in verschiedenen Verzeichnissen liegen.
Also hat das nichts damit zu tun, dass das nur mit dem „dir“ nicht funktioniert - das muss eine allgemeine Einstellung sein.

Der Aufruf erfolgt mit Doppelklick - das ist genau das Problem denn in cmd.exe wäre das alles kein Problem.

Zusätzliche Programme laufen auch nicht und ich hab das ganze auch schon komplett offline versucht.

Ich bin jetz erstmal was Essen und vielleicht kann ich nach der Pause besser denken :smile:

VG

1 Like