andr3000
Goto Top

XCOPY Hilfe bei Batch

weiß net weiter

Hallo an alle

habe eine BAT Datei

ich will eine datei kopieren als Bsp: xyz.ini

de kommt auf einen Server.Dort legt er die IP Adresse im Ordner so wie es soll vom PC!
Problem ist nur das es bei einigen C:\Programme\ ist und bei anderen C:\Program Files\
also insgesammt 4 Quellen :D je nachdem ob englisch oder Deutsch oder neue Software!

meine bat sieht ca so aus ( ohne die ordner erstellungs-Befhel für IP)

REM von WO soll gesichert werden?
REM --------------------------------------
set quelle="C:\Programme\Software\ini" if not exist goto set
:set
set quelle="C:\Program Files\Software\ini" if not exist goto set1
:set1
set quelle="C:\Programme\Software1\ini"


REM WOHIN sollen die Daten kopiert werden?
REM --------------------------------------
Set ziel=\\serverxy\software\%IP%\


REM -----------------------------Kopiervorgang------------------------------------
set fehler=0

xcopy /i /y /v /q %quelle%\xyz.ini %ziel%
if ERRORLEVEL 1 (set /a fehler=%fehler%+1)


Das Problem ist nur er findet die xyz.ini nicht wenn es net zufällig c:\Programme\software ist.
Er lässt die anderen Quellen einfach komplett aus!
Was kann i da machen?

Content-ID: 191377

Url: https://administrator.de/contentid/191377

Ausgedruckt am: 22.11.2024 um 18:11 Uhr

Fidel83
Fidel83 18.09.2012 um 07:14:49 Uhr
Goto Top
Guten Morgen

Die Ordnerhierarchie existiert aber schon? Du hast in jedem Software-Ordner einen Unterordner namens ini?

Setzt doch an das Ende der batch-File ein Pause und schau es dir die Ausgabe mal an. Deine ersten beiden Quellen wird er nicht finden, ergo geht er zu set1. Dort sucht er dann.

xcopy /i /y /v /q "C:\Programme\Software1\ini"\xyz.ini \\serverxy\software\%IP%\
Datei xyz.ini nicht gefunden.
0 Datei(en) kopiert

So sollte deine Ausgabe dann in etwa aussehen.

Prüf das doch mal und gib gegebenfalls die Ausgabe hier preis, falls du mit dieser nicht klar kommst.

LG
2hard4you
2hard4you 18.09.2012 aktualisiert um 08:02:11 Uhr
Goto Top
Moin,

gib mal am Commandprompt auf Deinen verschiedenen Versionen den Befehl set ein - die jeweils linke Seite sind Variablen, die Du auch verwenden kannst - Deine heißt (weil Du kein OS hinzugeschrieben hast) wahrscheinlich ProgramFiles (und ist in Deutsch und Englisch gleich)

Gruß

24
bastla
bastla 18.09.2012 um 08:09:31 Uhr
Goto Top
Hallo andr3000!

Einfach richtige "if" verwenden face-wink - Dein (ohne passende Formatierung gepostetes) Beispiel ist (sogar, wenn das jeweilige "if" in einer eigenen Zeile stünde) logisch und syntaktisch falsch - grundsätzlich (aber ungetestet face-wink) könnte das etwa so aussehen:
REM von WO soll gesichert werden?
REM --------------------------------------
set "quelle=C:\Programme\Software\ini"  
if exist "%quelle%" goto :Kopieren  
set "quelle=C:\Program Files\Software\ini"  
if exist "%quelle%" goto :Kopieren  
set "quelle=C:\Programme\Software1\ini"  
if exist "%quelle%" goto :Kopieren  
echo Quelle nicht gefunden!
goto :eof

:Kopieren
REM WOHIN sollen die Daten kopiert werden?
REM --------------------------------------
Set "ziel=\\serverxy\software\%IP%\"  

REM -----------------------------Kopiervorgang------------------------------------
set fehler=0
xcopy /yq "%quelle%\xyz.ini" "%ziel%" || set /a fehler+=1  
Grüße
bastla
Raven42
Raven42 18.09.2012 um 13:08:58 Uhr
Goto Top
Oder Du nimmst die bereits vorhandene Variable %ProgramFiles% ...