de-vraag
  • Fragen
  • Tags
  • Benutzer
Benachrichtigungen
Belohnungen
Registrierung
Sobald Sie sich registriert haben, werden Sie über Antworten und Kommentare zu Ihren Fragen informiert.
Einloggen
Wenn Sie bereits ein Konto haben, melden Sie sich an, um neue Benachrichtigungen zu prüfen.
Es wird Belohnungen für hinzugefügte Fragen, Antworten und Kommentare geben.
Mehr
Quelle
Bearbeiten
Sebastián Grignoli
Sebastián Grignoli
Frage

Was bedeutet %~dp0, und wie funktioniert es?

Ich finde %~dp0 sehr nützlich und benutze es oft, um meine Batch-Dateien portabler zu machen.

Aber die Bezeichnung selbst erscheint mir sehr kryptisch... Was macht das ~? Bedeutet "dp" Laufwerk und Pfad? Bezieht sich die "0" auf "%0", den Pfad zur Batch-Datei, der den Dateinamen enthält?

Oder ist es nur eine seltsame Bezeichnung?

Ich würde auch gerne wissen, ob es sich um eine dokumentierte Funktion handelt, oder um etwas, das veraltet sein könnte.

964 2011-02-17T20:15:21+00:00 3
 double-beep
double-beep
Bearbeitete Frage 27. Januar 2019 в 11:42
Programmierung
batch-file
Beliebte Videos
PixumTV: Was bedeutet DPO oder automatische Bildoptimierung?
PixumTV: Was bedeutet DPO oder automatische Bildoptimierung?
vor 6 Jahren
Présentation de la boite de vitesse automatique AL4 PSA Peugeot Citroën (DP0 Renault)
Présentation de la boite de vitesse automatique AL4 PSA Peugeot Citroën (DP0 Renault)
vor 1 Jahr
AL4 DP0 Gearbox Fault Repair P1167 (step by step)
AL4 DP0 Gearbox Fault Repair P1167 (step by step)
vor 2 Jahren
Бюджетный ремонт АКПП DP0/AL4/DP2
Бюджетный ремонт АКПП DP0/AL4/DP2
vor 7 Monaten
Ремонт АКПП AL4/DP0
Ремонт АКПП AL4/DP0
vor 1 Jahr
AL4  DPO Automatic Transmission Service Fluid Refill & Level Check Renault Citroen Peugot How To DIY
AL4 DPO Automatic Transmission Service Fluid Refill & Level Check Renault Citroen Peugot How To DIY
vor 1 Jahr
Разборка, дефектовка АКПП al4 (dp0).
Разборка, дефектовка АКПП al4 (dp0).
vor 6 Monaten
Hydropneumatic Riveter ZK 02.001 for DP0 (AL4) Torque Converter
Hydropneumatic Riveter ZK 02.001 for DP0 (AL4) Torque Converter
vor 1 Jahr
DP0 and AL4 automatic gearbox fast and easy repair. Renault and Citroen
DP0 and AL4 automatic gearbox fast and easy repair. Renault and Citroen
vor 6 Jahren
Усиление гидротрансформатора AL4/DP0
Усиление гидротрансформатора AL4/DP0
vor 7 Monaten
DPO DSO DIH und CCC - Working Capital Management im Unternehmen
DPO DSO DIH und CCC - Working Capital Management im Unternehmen
vor 1 Jahr
Makita DPO 500Z Akku-Exzenterpolierer im XXL-Review - die bessere Makita PO5000C ? Teil 2
Makita DPO 500Z Akku-Exzenterpolierer im XXL-Review - die bessere Makita PO5000C ? Teil 2
vor 2 Jahren
DP0 Delegate Assembly: Image Processing
DP0 Delegate Assembly: Image Processing
vor 5 Monaten
How to fill the payment page on the DPO payment system
How to fill the payment page on the DPO payment system
vor 3 Jahren
Sigma dp0 quattro samples
Sigma dp0 quattro samples
vor 6 Jahren
« Zurück
Vor »
Diese Frage hat 1 Antwort auf Englisch, um sie zu lesen melden Sie sich in Ihrem Konto an.
Lösung / Antwort
 schnaader
schnaader
17. Februar 2011 в 8:19
2011-02-17T20:19:27+00:00
Mehr
Quelle
Bearbeiten
#11901229

Aufruf von

for /?

in der Kommandozeile gibt Hilfe zu dieser Syntax (die auch außerhalb von FOR verwendet werden kann, dies ist nur der Ort, an dem die Hilfe zu finden ist).

Außerdem wurde die Ersetzung von FOR Variablenreferenzen verbessert worden. Sie können jetzt die folgende optionale Syntax verwenden:

%~I - expandiert %I und entfernt alle umgebenden Anführungszeichen (") %~fI - erweitert %I zu einem voll qualifizierten Pfadnamen %~dI - erweitert %I nur auf einen Laufwerksbuchstaben %~pI - erweitert %I nur zu einem Pfad %~nI - erweitert %I nur zu einem Dateinamen %~xI - erweitert %I nur um eine Dateierweiterung %~sI - der erweiterte Pfad enthält nur kurze Namen %~aI - erweitert %I um Dateiattribute der Datei %~tI - erweitert %I um Datum/Uhrzeit der Datei %~zI - erweitert %I um die Größe der Datei %~$PATH:I - durchsucht die Verzeichnisse, die in der PATH Umgebungsvariable aufgelisteten Verzeichnisse und expandiert %I in den voll qualifizierten Namen des ersten gefundenen Verzeichnisses. Falls der Name der Umgebungsvariablen nicht > definiert ist definiert ist oder die Datei bei der Suche nicht gefunden wird Suche nicht gefunden wird, wird dieser Modifikator auf die leere Zeichenkette

Die Modifikatoren können kombiniert werden, um zusammengesetzte Ergebnisse zu erhalten:

%~dpI - expandiert %I nur zu einem Laufwerksbuchstaben und Pfad %~nxI - erweitert %I nur auf einen Dateinamen und eine Erweiterung %~fsI - expandiert %I zu einem vollständigen Pfadnamen mit nur kurzen Namen %~dp$PATH:I - sucht in den Verzeichnissen, die in der PATH Umgebungsvariable aufgelisteten Verzeichnisse nach %I und expandiert auf den Laufwerksbuchstaben und Pfad des ersten gefundenen Verzeichnisses. %~ftzaI - expandiert %I zu einer DIR-ähnlichen Ausgabezeile

In den obigen Beispielen können %I und PATH durch andere gültige Werte ersetzt werden. Die %~-Syntax wird durch einen gültigen FOR-Variablennamen abgeschlossen. Die Wahl von Großbuchstaben Variablennamen wie %I macht es besser Lesbarkeit und vermeidet Verwechslungen mit den Modifikatoren, die nicht zwischen Groß- und Kleinschreibung unterscheiden.

Es gibt verschiedene Buchstaben, die Sie verwenden können, wie f für "vollständiger Pfadname", d für Laufwerksbuchstabe, p für Pfad, und sie können kombiniert werden. %~ ist der Anfang für jede dieser Sequenzen und eine Zahl I bedeutet, dass sie mit dem Parameter %I arbeitet (wobei %0 der vollständige Name der Stapeldatei ist, genau wie Sie angenommen haben).

 schnaader
schnaader
Bearbeitete Antwort 17. April 2016 в 3:53
764
0
 smwikipedia
smwikipedia
24. April 2012 в 1:51
2012-04-24T01:51:15+00:00
Mehr
Quelle
Bearbeiten
#11901231

(Zunächst möchte ich Ihnen diese nützliche Referenzseite für Chargen empfehlen: http://ss64.com/nt/)

Dann eine weitere nützliche Erklärung: http://htipe.wordpress.com/2008/10/09/the-dp0-variable/

Die Variable %~dp0

Die Variable %~dp0 (das ist eine Null), wenn sie in einer Windows Stapeldatei referenziert wird, expandiert sie zum dLaufwerksbuchstaben und pPfad dieser Stapeldatei Datei.

Die Variablen %0-%9 beziehen sich auf die Befehlszeilenparameter der Batch Datei. %1-%9 beziehen sich auf die Befehlszeilenargumente nach dem Namen der Batch-Datei. %0 bezieht sich auf die Batch-Datei selbst.

Wenn Sie dem Prozentzeichen (%) eine Tilde (~) folgen lassen, können Sie einen Modifikator (>) einfügen, können Sie vor der Parameternummer einen oder mehrere Modifikatoren einfügen, um die Art und Weise, wie die Variable expandiert wird. Der Modifikator d expandiert zum Laufwerk Laufwerksbuchstaben und der Modifikator p auf den Pfad des Parameters.

Beispiel: Nehmen wir an, Sie haben auf C: ein Verzeichnis namens bat_files, und in diesem Verzeichnis befindet sich eine Datei namens example.bat. In diesem Fall würde %~dp0 (die Kombination der Modifikatoren d und p) zu C:\bat_files\ expandieren.

Eine ausführliche Erklärung finden Sie in diesem Microsoft-Artikel.

Sehen Sie sich auch diesen Forumsbeitrag an.

Und eine deutlichere Referenz von hier:

  • %CmdCmdLine% gibt die gesamte Befehlszeile zurück, wie sie an CMD.EXE übergeben wurde

  • %* gibt den Rest der Befehlszeile zurück, beginnend mit dem ersten Befehlszeilenargument (in Windows NT 4 schließt %* auch alle führenden Leerzeichen ein)

  • %~dn gibt den Laufwerksbuchstaben von %n (n kann von 0 bis 9 reichen) zurück, wenn %n ein gültiger Pfad oder Dateiname ist (kein UNC)

  • %~pn gibt das Verzeichnis von %n zurück, wenn %n ein gültiger Pfad- oder Dateiname ist (kein UNC)

  • %~nn gibt nur den Dateinamen von %n zurück, wenn %n ein gültiger Dateiname ist

  • %~xn gibt nur die Dateierweiterung von %n zurück, wenn %n ein gültiger Dateiname ist

  • %~fn gibt den voll qualifizierten Pfad von %n zurück, wenn %n ein gültiger Dateiname oder ein Verzeichnis ist

ADD 1

Habe gerade eine gute Referenz für den mysteriösen Tilde-Operator ~ gefunden.

Die %~ Zeichenkette wird Prozent Tilde Operator genannt. Man findet ihn in Situationen wie: %~0.

Die Zeichenkette :~ wird als Doppelpunkt Tilde Operator bezeichnet. Du kannst ihn in Situationen wie %SOME_VAR:~0,-1% finden.

ADD 2 - 13:12 PM 7/6/2018

Die "%1-%9" beziehen sich auf die Kommandozeilen-Args. Wenn sie nicht gültige Pfadwerte sind, werden %~dp1 - %~dp9 alle zum gleichen Wert wie %~dp0 expandiert. Aber wenn sie gültige Pfadwerte sind, werden sie zu ihrem eigenen Treiber/Pfadwert expandiert.

Zum Beispiel: (batch.bat)

@echo off
@echo ~dp0= %~dp0
@echo ~dp1= %~dp1
@echo ~dp2= %~dp2
@echo on

Lauf 1:

D:\Workbench>batch arg1 arg2

~dp0= D:\Workbench\
~dp1= D:\Workbench\
~dp2= D:\Workbench\

Lauf 2:

D:\Workbench>batch c:\123\a.exe e:\abc\b.exe

~dp0= D:\Workbench\
~dp1= c:\123\
~dp2= e:\abc\
 smwikipedia
smwikipedia
Bearbeitete Antwort 6. Juli 2018 в 5:18
The %~dp0 Variable | Miscellaneous IT Pimpery
The %~dp0 (that's a zero) variable when referenced within a Windows batch file will expand to the drive letter and path of that batch file. The variables %0-%9 refer to the command line parameters of the batch file. %1-%9 refer to command line arguments after the batch file name. %0 refers to the batch file…
htipe.wordpress.com
Desktop Cloud and Hardware 4 Windows: How to Write a Good Old Windows Batch File (GOTO considered useful)
Introduction This post is about effective batch file writing. No Windows programmer is complete without a working knowledge of batch files...
windowsjoe.blogspot.com
An A-Z Index of Windows CMD commands - SS64.com
An A-Z Index of Windows CMD commands.
ss64.com
Windows Batch Scripting - Wikibooks, open books for an open world
en.wikibooks.org
326
0
Andy White
Andy White
17. Februar 2011 в 8:28
2011-02-17T20:28:28+00:00
Mehr
Quelle
Bearbeiten
#11901230

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true

Die Variable %0 in einem Batch-Skript wird auf den Namen der ausführenden Batch-Datei gesetzt. Die spezielle Syntax ~dp zwischen % und 0 besagt im Grunde, dass die Variable %0 erweitert werden soll, um den Laufwerksbuchstaben und den Pfad anzuzeigen, was Ihnen das aktuelle Verzeichnis mit der Batch-Datei liefert!

Andy White
Andy White
Bearbeitete Antwort 17. Februar 2011 в 9:48
147
0
Frage hinzufügen
Kategorien
Alle
Technologie
Kultur/Erholung
Leben/Kunst
Wissenschaft
Professionell
Unternehmen
Benutzer
Alle
Neu
Beliebt
1
365
Registriert vor 1 Tag
2
True Image
Registriert vor 1 Tag
3
archana agarwal
Registriert vor 3 Tagen
4
Maxim Zhilyaev
Registriert vor 6 Tagen
5
adambotsfford adambotsfford
Registriert vor 1 Woche
DE
EL
ES
FR
ID
IT
JA
KO
LT
NL
PT
RU
TR
ZH
© de-vraag 2022
Quelle
stackoverflow.com
unter Lizenz cc by-sa 3.0 mit Attribut