Verwenden des "% ~ dp0" mit Befehlszeilenargumenten, die nicht funktionieren

5098
Alex Pilon

Erstellen Sie ein Bereitstellungsskript für eine Software, die Visual C ++ 2013 Redistributable im unbeaufsichtigten Modus von einer sich bewegenden Quelle (dh der Ordner kann sich auf einem Schlüssel befinden, auf einem Server, lokal usw.) als Administrator installiert werden.

Für alle meine anderen ausführbaren Dateien (meistens MSI) ist die Verwendung von "% ~ dp0" vor dem Dateinamen (wie beispielsweise "% ~ dp0Antidote9.msi") gefolgt von Argumenten wie / quiet, / q usw. problemlos möglich.

Aber für VC Redist akzeptiert er meine Argumente nicht.

Hier ist mein volles Kommando:

start /wait "%~dp0vcredist_x64.exe" /install /quiet /norestart 

Es zieht die Datei in Ordnung, sagt dann aber, dass meine Argumente ungültig sind, auch wenn ich das% ~ dp0 entferne, funktioniert es gut und ich habe die Argumente von vcredist_x64.exe / bekommen.

Gibt es etwas, was ich falsch mache oder das ich modifizieren muss, damit meine Argumente funktionieren?

Danke im Voraus!

1

1 Antwort auf die Frage

2
Vassile

Sie könnten anstelle von das verwenden, %CD%\das für Aktuelles Verzeichnis steht %~dp0.

Ich habe keinen Unterschied zwischen diesen beiden bemerkt.

Nebenbei bemerkt, wenn Sie den startBefehl verwendet haben, empfiehlt es sich, ""vor dem Programmstart ein zusätzliches Element hinzuzufügen und alle Parameter in ein Zitat einzubeziehen. Bei Bedarf müssen die in Anführungszeichen angegebenen Parameter durch ein Escape-Symbol ersetzt werden. Beispiel:

start /wait "" "%CD%\MyProgram.exe /link \"MyOtherDLL.dll\"" 
Hallo! % CD% funktioniert nicht. Der Grund, warum ich% ~ dp0 verwende, liegt darin, dass der Pfad, in dem sich die CMD-Datei befindet, aufgerufen werden muss, da sie als Administrator ausgeführt wird. Wenn ich% CD% verwende, wird stattdessen C: \ Windows \ system32 angezeigt. Alex Pilon vor 7 Jahren 0
@AlexPilon Versuchen Sie, ein \ (Back-Slash) am Ende des Pfads nach '% ~ dp0' hinzuzufügen, und fahren Sie dann mit der ausführbaren Programmdatei fort. Haben Sie auch versucht, zusätzliches "" "hinzuzufügen? Laut Syntax nimmt start den ersten Parameter als Fenstertitel (wahrscheinlich für ein altes DOS-Programm) und den zweiten Parameter als ausführbaren Pfad (und die entsprechenden Argumente für dieses bestimmte Programm, die im selben Zitat enthalten sind, mit korrekt unterdrückten Unterkontingenten an). . Vassile vor 7 Jahren 0
Eigentlich habe ich gerade meinen Kommentar bearbeitet, kurz bevor du einen Beitrag geschrieben hast. Ich fand einen Weg, dies zu tun, mit ein paar deiner Hilfe. Das zusätzliche "" am Start hinzugefügt hat den Trick getan. Wenn ich den gesamten Pfad und die gesamten Argumente in Anführungszeichen einfügte, würde er den Pfad und die Argumente als Dateinamen betrachten. Meine letzte Zeile lautet also: start / wait "" ""% ~ dp0vcredist_x64.exe "/ install / quiet / norestart Und es funktioniert perfekt! Danke für Ihre Hilfe :) Alex Pilon vor 7 Jahren 0
@AlexPilon Cool. Sie haben mir auch geholfen, die Unterschiede zwischen beiden zu klären. Vassile vor 7 Jahren 0