Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Variabler Dateipfad in .bat

Frage Entwicklung Batch & Shell

(Level 1)

27.03.2008, aktualisiert 07.04.2008, 7026 Aufrufe, 6 Kommentare

Hi ist ne ganz kurze sache.
ich habe mir ne kleine *.bat Datei geschrieben, die mir zwei programme öffnet.

call D:\Temp\Helpsoft\Programm1.exe
call D:\Temp\Helpsoft\Programm2.exe

ich möchte mir die Datei jetzt auf einen USB Stick machen, jedoch möchte ich nicht jedesmal den Laufwerksbuchtaben ändern. Ich möchte, das er immer den aktuellen Laufwerkbuchtaben nimmt, kann ja sein, das 2 USB Sticks angeschlossen sind und er dann nicht den richtigen Laufwerkbuchstaben aht, deswegen wäre variabel nicht schlecht.

In excel habe ich sowas schonmal gemacht mit "This.Workbookpath" pder so ähnlich.
gibt es hier diese funktion auch?

Danke schonmal.

Gruß
Mitglied: miniversum
27.03.2008 um 10:36 Uhr
Laufwerk der Batchdatei:
echo %~d0
Laufwerk und Pfad der Batchdatei:
echo %~dp0

Weiteres unter for /? ganz am Ende
Bitte warten ..
Mitglied: bastla
27.03.2008 um 11:13 Uhr
Hallo MichaelS87!

Wenn's nur um den Laufwerksbuchstaben geht, dann:
01.
call %~d0\Temp\Helpsoft\Programm1.exe 
02.
call %~d0\Temp\Helpsoft\Programm2.exe
Grüße
bastla
Bitte warten ..
Mitglied: miniversum
27.03.2008 um 11:55 Uhr
klappt noch nicht so ganz.

er öffnet es zwar, aber das steht da

D:\Temp>call D:\Temp\Tfes.pdf


in der batch selber steht

call %~d0\Temp\Tfes.pdf
Das stimt ja so. Wenn die Batch auf dem Laufwerk D: liegt stellt das %~d0 eben das D: dar.
wenn ich die batch jetzt aber in das selbe verzeichneis wie die Tfes.pdf kopiere und das \Temp weg mache, dann geht es nichtmehr. das sollte es doch oder?
Nein ist klar das es so nicht geht. Schau dir nochmal mein posting oben an.
%~d0 stellt NUR den laufwerksbuchstaben dar indem die Batch liegt. %~dp0 stellt Laufwerksbuchstaben UND verzeichnis dar indem die Batch liegt. Daher werden bei dir wenn du das /temp entfernst die Dateien ncith merh gefunden. wenn du die Batch im gleichen verzeichnis liegen hast ie die andern dateien dann must du also aus deinem
call %~d0\Temp\Tfes.pdf
ein
call %~dp0\Tfes.pdf
machen.
In diesem fall kannst du aber auch eigentlich gleich mit relativen Pfadangaben arbeiten und den aufruf nur so machen:
call Tfes.pdf
Bitte warten ..
Mitglied: bastla
27.03.2008 um 11:59 Uhr
Hallo MichaelS87!

wenn ich die batch jetzt aber in das selbe verzeichneis wie die Tfes.pdf kopiere und das \Temp weg mache, dann geht es nichtmehr. das sollte es doch oder?
Nicht unbedingt - Du erzeugst ja damit dann ein
01.
call D:\Tfes.pdf
Wie miniversum oben schon beschrieben hat, ist der Pfad der Batchdatei unter "%~dp0" zu erreichen - daher müsste es
01.
call %~dp0\Tfes.pdf
heißen.

Falls es auch noch Leerzeichen im Pfad gäbe, zusätzlich Anführungszeichen verwenden:
01.
call "%~dp0\Tfes.pdf"
Grüße
bastla

[Edit] @miniversum: Sorry, hatte nicht gesehen, dass Du wieder da bist .. [/Edit]
Bitte warten ..
Mitglied: miniversum
27.03.2008 um 18:45 Uhr
Also wenn die Batch vorher so funktionierte würde ich sagen das eine Änderung zu
set "Start=w\md01 w\md02 w\md03 w\md04 x\md01"
funktionieren sollte.
Das andere würde ich sicherheitshalber lieber nicht machen, denn sollte die Batch in einem Verzeichnis liegen das ein Leerzeichen enthält würde das zu problemen führen. Die alternative dazu würde dann besser so aussehen:
set "Start=w\md01 w\md02 w\md03 w\md04 x\md01"
und zusätzlich folgende Änderung:
for %%S in (%Start%) do for /f "delims=" %%A in ('dir /b /ad "%~dp0\%%S\%Maske%*.*" 2^>nul') do echo %%~nA$%%~fA >>"%List%"

miniversum
Bitte warten ..
Mitglied: Biber
07.04.2008 um 19:58 Uhr
Moin MichaelS87,

ich habe es so versucht, jedoch ohne erfolg.
set "Start=%~dp0\w\md01 %~dp0\w\md02 %~dp0\w\md03 %~dp0\w\md04 %~dp0\x\md01"
Dann können wirklich nur, wie miniversum schon schrieb, Leerzeichen im %dp0-Pfad der Klemmer sein.

Dann müssen wir etwas dicker auftragen:
set "Start="%~dp0\w\md01" "%~dp0\w\md02" "%~dp0\w\md03" "%~dp0\w\md04" "%~dp0\x\md01""

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
XML in CSV bat batch powershell (9)

Frage von nolle99 zum Thema Batch & Shell ...

Windows 10
Logon.bat - Access Denied (5)

Frage von HansWurstAugust zum Thema Windows 10 ...

Batch & Shell
gelöst Bat soll in einer .dll eine Zeile suchen und Diese + 2 darunterliegende anzeigen (10)

Frage von Gangster137910 zum Thema Batch & Shell ...

Windows Server
Nutzer per Bat-Datei zum AD hinzufügen (1)

Frage von elsa-ebs zum Thema Windows Server ...

Neue Wissensbeiträge
Administrator.de Feedback

Umgangsformen auf der Seite

(7)

Information von Frank zum Thema Administrator.de Feedback ...

Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(10)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Batch & Shell
Dir tc Befehl unter Windows 10 macht Probleme (12)

Frage von sugram zum Thema Batch & Shell ...

Windows Server
Windows Server 2016 RDS Remoteapp Anzeigefehler (11)

Frage von qlnGenius zum Thema Windows Server ...

Windows Server
Festplatten Ruhezustand Windows Server 2016 (10)

Frage von ahaeuser zum Thema Windows Server ...