it-swarm.com.de

Verhindern Sie das Überschreiben einer Datei mit cmd, falls vorhanden

Ich schreibe gerade eine .bat Batch-Datei, die eine Installationsdatei ausführt. Bevor die Installationsdatei ausgeführt wird, überprüfe ich, ob das Verzeichnis vorhanden ist, um eine Neuinstallation der Anwendung zu vermeiden.

Ich verwende dazu eine If Not Exist filename - Anweisung. Wenn die installierte Datei nicht existiert, führe ich die Installationsdatei aus.

Wenn ich es mit der Anwendung teste, auf der es bereits installiert wurde, versucht es aus irgendeinem Grund immer noch, die Anwendung darüber neu zu installieren.

Hier ist ein Ausschnitt aus meinem Code:

cd "C:\Documents and Settings\John\Start Menu\Programs\"
pause
If NOT exist "Software Folder"\ (
 start \\filer\repo\lab\"software"\"myapp"\setup.exe
 pause
) 

Wobei SoftwareFolder ein Unterverzeichnis von "C:\Documents and Settings\John\Start Menu\Programs\". Ist. Ich überprüfe, ob es in meinem Programs Ordner existiert.

Ich weiß, dass mit meinem Befehl start nichts falsch ist. Ich habe das Gefühl, dass etwas mit meinem beginnenden CD Befehl oder einem seiner Parameter nicht stimmt.

Vielen Dank, Jungs!

35
Johnrad

Verwenden Sie den vollständigen Pfad zu dem Ordner in Ihrem If Not Exist-Code. Dann brauchen Sie nicht einmal mehr eine CD:

If Not Exist "C:\Documents and Settings\John\Start Menu\Programs\SoftWareFolder\"
44
Jimmy D

Wie in der Antwort von Escobar Ceaser empfehle ich, den gesamten Pfad in Anführungszeichen zu setzen. Es ist die gebräuchliche Methode, den gesamten Pfad in "" einzuschließen und nicht nur Verzeichnisnamen innerhalb des Pfads zu trennen.

Ich hatte ein ähnliches Problem, das bei mir nicht funktionierte. Es war jedoch nicht "" möglich, den Pfad für separate Verzeichnisnamen zu verwenden, da der Pfad Umgebungsvariablen enthielt, die selbst mehr als eine Verzeichnishierarchie abdecken. Die Schlussfolgerung war, dass ich den Raum zwischen dem Schluss "und dem (

Die richtige Version mit dem Abstand vor der Klammer wäre

If NOT exist "C:\Documents and Settings\John\Start Menu\Programs\Software Folder" (
 start "\\filer\repo\lab\software\myapp\setup.exe"
 pause
) 
3

Dabei sind mir einige Probleme aufgefallen, die hilfreich sein können, wenn jemand gerade erst anfängt oder ein etwas unerfahrener Benutzer es weiß. Zuerst...

CD /D "C:\Documents and Settings\%username%\Start Menu\Programs\"

zwei Dinge sind, dass sich ein/D nach der CD als nützlich erweisen kann, um sicherzustellen, dass das Verzeichnis geändert wird, aber es ist nicht wirklich notwendig, zweitens, wenn Sie dies von Benutzer zu Benutzer weitergeben möchten, müssen Sie statt Ihres hinzufügen name, der Code% username%. Dadurch kann der Code auf jedem Computer verwendet werden, sofern sich die Datei setup.exe am selben Speicherort wie auf Ihrem Computer befindet. Natürlich ist es schwieriger, dafür zu sorgen. ebenfalls...

start \\filer\repo\lab\"software"\"myapp"\setup.exe

der Startcode hier kann so eingestellt werden, aber die korrekte Syntax ist

start "\\filter\repo\lab\software\myapp\" setup.exe

Dies wird ausgeführt: setup.exe, befindet sich in:\filter\repo\lab ... etc. \

3
Noah Puckett