Batch - unterschiedliche Variablen-Kombinationen in xxx.cvs definieren
Es wäre schön wenn mir jemand bei folgendem Problem helfen könnte:
Aktuell wird eine bestimmtes Tool (Catia) über folgenden Batch-File gestartet:
start_CATIAV5.bat
set CATVERS=B14_DMU
set BIT=32
set WIN=intel_a
set PROJECT=CATSettings_xxx_R14Sp4_32
set ENV=CATIA.V5R14
set CATInstallPath=N:\CAD\CATIA_V5\%CATVERS%\%WIN%
set DIRENV=N:\CAD\Start_CATIAV5\CATEnv_%BIT%
REM =====================================================================
REM Start CATIAV5
REM =====================================================================
start %CATInstallPath%\code\bin\CATSTART.exe -run "CNEXT.exe" -env %ENV% -direnv "%DIRENV%" -object empty
:exit
Um komfortabel unterschiedliche Konfigurationen starten zu können habe ich nun eine Konfigurationen.csv angelegt
Konfigurationen.csv
POS,OS Win,CATIAV5 Release,Catia Sp,Catia Hot Fix,%CATVERS%,%BIT%,%WIN%,%PROJECT%,%ENV%,%CATInstallPath%
KONF_01,32 bit,R14,Sp4,,B14_DMU,32,intel_a,CATSettings_xxx_R14Sp4_32,CATIA.V5R14.xxx,N:\CAD\CATIA_V5\%CATVERS%\%WIN%
KONF_02,32 bit,R16,Sp5,Hot Fix 46,B16_DMU_32N,32,intel_a,CATSettings_xxx_R16Sp5_32,CATIA.V5R16.xxx,N:\CAD\CATIA_V5\%CATVERS%\%WIN%
KONF_03,64 bit,R18,Sp2,-,B18,64,win_b64,CATSettings_xxx_R18Sp2_64,CATIA.V5R18.xxx,N:\CAD\CATIAV5_64\%CATVERS%\%WIN%
KONF_04,32 bit,R18,Sp3,,B18,32,intel_a,CATSettings_xxx_R18Sp3_32,CATIA.V5R18.xxx,N:\CAD\CATIA_V5\%CATVERS%\%WIN%
Der Batch-File soll nun wie folgt gestartet werden:
start_CATIAV5.bat KONF_01 oder start_CATIAV5.bat KONF_02
Die Variablen sollen über die Konfigurationen.csv definiert werden
Wie ist der Batch-File zu ändern. Ich habe keine Ahnung von for, tokens, delims und findstr aber muss etwas damit zu tun haben.
Danke für eure Hilfe
Stephan Leci
Aktuell wird eine bestimmtes Tool (Catia) über folgenden Batch-File gestartet:
start_CATIAV5.bat
set CATVERS=B14_DMU
set BIT=32
set WIN=intel_a
set PROJECT=CATSettings_xxx_R14Sp4_32
set ENV=CATIA.V5R14
set CATInstallPath=N:\CAD\CATIA_V5\%CATVERS%\%WIN%
set DIRENV=N:\CAD\Start_CATIAV5\CATEnv_%BIT%
REM =====================================================================
REM Start CATIAV5
REM =====================================================================
start %CATInstallPath%\code\bin\CATSTART.exe -run "CNEXT.exe" -env %ENV% -direnv "%DIRENV%" -object empty
:exit
Um komfortabel unterschiedliche Konfigurationen starten zu können habe ich nun eine Konfigurationen.csv angelegt
Konfigurationen.csv
POS,OS Win,CATIAV5 Release,Catia Sp,Catia Hot Fix,%CATVERS%,%BIT%,%WIN%,%PROJECT%,%ENV%,%CATInstallPath%
KONF_01,32 bit,R14,Sp4,,B14_DMU,32,intel_a,CATSettings_xxx_R14Sp4_32,CATIA.V5R14.xxx,N:\CAD\CATIA_V5\%CATVERS%\%WIN%
KONF_02,32 bit,R16,Sp5,Hot Fix 46,B16_DMU_32N,32,intel_a,CATSettings_xxx_R16Sp5_32,CATIA.V5R16.xxx,N:\CAD\CATIA_V5\%CATVERS%\%WIN%
KONF_03,64 bit,R18,Sp2,-,B18,64,win_b64,CATSettings_xxx_R18Sp2_64,CATIA.V5R18.xxx,N:\CAD\CATIAV5_64\%CATVERS%\%WIN%
KONF_04,32 bit,R18,Sp3,,B18,32,intel_a,CATSettings_xxx_R18Sp3_32,CATIA.V5R18.xxx,N:\CAD\CATIA_V5\%CATVERS%\%WIN%
Der Batch-File soll nun wie folgt gestartet werden:
start_CATIAV5.bat KONF_01 oder start_CATIAV5.bat KONF_02
Die Variablen sollen über die Konfigurationen.csv definiert werden
Wie ist der Batch-File zu ändern. Ich habe keine Ahnung von for, tokens, delims und findstr aber muss etwas damit zu tun haben.
Danke für eure Hilfe
Stephan Leci
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 106599
Url: https://administrator.de/forum/batch-unterschiedliche-variablen-kombinationen-in-xxx-cvs-definieren-106599.html
Ausgedruckt am: 23.12.2024 um 15:12 Uhr
3 Kommentare
Neuester Kommentar
Hallo prittstift69 und willkommen im Forum!
Das könnte etwa so gehen:
Die eingelesenen Felder der CSV-Datei sind als %%a, %%b, etc verfügbar.
Für einen nicht vorhandenen Wert solltest Du in der Datei zumindest eine Leerstelle schreiben, da aufeinanderfolgende Trennzeichen (also zwei oder mehr Kommata) nur als ein einziges Trennzeichen interpretiert werden.
Grüße
bastla
P.S.: Ich kann zwar bis 11 zählen, aber falls Du noch weitere Felder hinzufügen musst, brauchst Du (solange es dann insgesamt nicht mehr als 20 sind ) zumindest die Angabe nach "tokens=" nicht anzupassen ...
Das könnte etwa so gehen:
@echo off & setlocal
set "Konf=Konfigurationen.csv"
findstr /b "%1" "%Konf%">nul || (echo Konfiguration %1 nicht gefunden! & pause & goto :eof)
for /f "tokens=1-20 delims=," %%a in ('findstr /b "%1" "%Konf%"') do (
set "CATVERS=%%f"
set "BIT=%%b"
set ...
....
)
Für einen nicht vorhandenen Wert solltest Du in der Datei zumindest eine Leerstelle schreiben, da aufeinanderfolgende Trennzeichen (also zwei oder mehr Kommata) nur als ein einziges Trennzeichen interpretiert werden.
Grüße
bastla
P.S.: Ich kann zwar bis 11 zählen, aber falls Du noch weitere Felder hinzufügen musst, brauchst Du (solange es dann insgesamt nicht mehr als 20 sind ) zumindest die Angabe nach "tokens=" nicht anzupassen ...
Hallo prittstift69!
Grüße
bastla
Ich habe die doppelten Anführungszeichen in der ersten Zeile mit SET weggelassen, haben die eine bestimmte Funktion?
Du kannst diese Anführungszeichen problemlos weglassen - ich verwende sie, da damit genau zu kontrollieren ist, was der Variablen zugewiesen wird (zB zur Vermeidung unerwünschter Leerzeichen am Zeilenende). Abgesehen davon: Wenn sie schon nicht nützen sollten, schaden sie zumindest auch nicht ...Ist die Option setlocal wichtig?
Sie ist jedenfalls grundsätzlich zu empfehlen - so bleiben die Inhalte neu erstellter oder veränderter Variablen nur bis zum nächsten "endlocal" (ein solches wird auch beim Ende des Batches automatisch ausgeführt) erhalten - Vorteil: In einem weiteren Batch musst Du nicht daran denken, dass ev eine dieser Variablen bereits existiert und einen vielleicht unerwünschten Wert enthält.Grüße
bastla