Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst leerzeichen am anfang und ende einer batch Variablen entfernen (trim in php)

Mitglied: OFFLINE

OFFLINE (Level 1) - Jetzt verbinden

09.01.2008, aktualisiert 18.10.2012, 23610 Aufrufe, 18 Kommentare

Hallo Leute,

ich würde gerne aus einer Variable die fürhrenden leerzeichen und die am ende entfernen falls vorhanden.
Die Anzahl der leerstellen ist unbekannt, und die leerstellen zwischen worten müssen bleiben.

%var1 =" das ist eine variabel "

ergebnis ="das ist eine variabel"

hat jemand eine idee?

vbs oder andere skripts will ich nicht umbedingt einsetzen.

Danke schonmal
Mitglied: bastla
09.01.2008 um 17:58 Uhr
Hallo OFFLINE!

Genau genommen sind die Leerzeichen in Deinem Beispiel keine führenden Leerzeichen, da sich davor ein Anführungszeichen befindet (in Batch werden Strings grundsätzlich nicht in Anführungszeichen eingeschlossen).

Beispiel mit "echten" führenden Leerzeichen:
01.
@echo off & setlocal
02.
set "var1=   das ist eine variable     "
03.
echo Vorher:  #%var1%#
04.

05.
:loop1
06.
if "%var1:~0,1%"==" " set "var1=%var1:~1%" & goto :loop1
07.
:loop2
08.
if "%var1:~-1%"==" " set "var1=%var1:~0,-1%" & goto :loop2
09.

10.
echo Nachher: #%var1%#
Sollte der Inhalt der Variablen aber tatsächlich die beschriebenen Anführungszeichen enthalten, dann so:
01.
@echo off & setlocal
02.
set var1=" das ist eine variabel "
03.
echo Vorher:  %var1%
04.
for /f "delims=" %%i in (%var1%) do set "var1=%%~i"
05.

06.
:loop1
07.
if "%var1:~0,1%"==" " set "var1=%var1:~1%" & goto :loop1
08.
:loop2
09.
if "%var1:~-1%"==" " set "var1=%var1:~0,-1%" & goto :loop2
10.

11.
set var1="%var1%"
12.
echo Nachher: %var1%
Grüße
bastla
Bitte warten ..
Mitglied: OFFLINE
10.01.2008 um 12:38 Uhr
Hallo bastla

dein skript funktioniert einwandfrei, Danke vielmals.
ich habe die erste variante gewählt, da keine "" vorkommen.

Allerdings habe ich noch ein kleines Problem mit dem Einbinden:

01.
FOR /F "eol=# tokens=1-12 delims=;" %%a IN (imptest.csv) DO (
02.
        echo #%%d#
03.
        :loop1
04.
        if "%%d:~0,1%"==" " set "d=%%d:~1%" & goto :loop1
05.
        :loop2
06.
        if "%%d:~-1%"==" " set "d=%%d:~0,-1%" & goto :loop2
07.
        echo #%%d#
08.
)
Ich bekomme beim Ausführen Syntaxfehler. Leider kann ich es mir nicht erklären warum.
Danke für die Hilfe
Bitte warten ..
Mitglied: bastla
10.01.2008 um 15:21 Uhr
Hallo OFFLINE!

Die Zerlegung in Teilstrings lässt sich auf die Laufvariablen von "for"-Schleifen nicht anwenden, daher musst Du den gelesenen Wert zunächst einer anderen Variablen zuweisen.

Je nachdem, ob Du ausschließen kannst, dass die zu verarbeitenden Daten das Zeichen "!" enthalten, gibt es zwei mögliche Vorgangsweisen: die Verwendung eines Unterprogrammes oder die "delayedexpansion", die "verzögerte Variablenauflösung". Für letztere gilt die oben angeführte Einschränkung auf Variablenwerte ohne "!".

Mit Unterprogramm würde es dann so aussehen:
01.
@echo off & setlocal
02.
FOR /F "eol=# tokens=1-12 delims=;" %%a IN (imptest.csv) DO call :ProcessLine "%%~d"
03.
goto :eof
04.

05.
:ProcessLine
06.
set "valtemp=%~1"
07.
echo #%valtemp%#
08.

09.
:loop1
10.
if "%valtemp:~0,1%"==" " set "valtemp=%valtemp:~1%" & goto :loop1
11.
:loop2
12.
if "%valtemp:~-1%"==" " set "valtemp=%valtemp:~0,-1%" & goto :loop2
13.

14.
echo #%valtemp%#
15.
goto :eof
Einige Anmerkungen:

Sollten die aus der CSV-Datei ausgelesenen Werte in Anführungszeichen eingeschlossen sein, werden diese durch die Schreibweise %%~d entfernt. Da der Wert an das Unterprogramm (entspricht einem externen, eigenständigen Batch) weitergegeben werden soll, wird er neuerlich zwischen Anführungszeichen gesetzt (um ev "Binnen"-Leerzeichen zu erhalten und den vollständigen Wert weiterzugeben). Durch diese Vorgangsweise wird sichergestellt, dass, unabhängig von der Darstellung der Ausgangsdaten mit oder ohne Anführungszeichen, die Übergabe mit Anführungszeichen erfolgt.

Im Unterprogramm kommt dieser Parameter als %1 an und wird (durch %~1 von den umgebenden Anführungszeichen "befreit") in die Variable %valtemp% "umgespeichert, da auch mit den Parametervariablen %0 bis %9 die Stringzerlegung nicht durchgeführt werden kann.

Noch kurz zu "goto :eof": Damit wird das Ende eines Programmteiles signalisiert, was für das Hauptprogramm "Ende Batch" bedeutet, während es im Unterprogramm als "Return" interpretiert wird. Soferne nach dem Unterprogramm keine weiteren Batchzeilen folgen, kannst Du es auch weglassen - der Rücksprung erfolgt dennoch.

Sollte übrigens %%d tatsächlich ein Wert ohne enthaltene Leerzeichen sein, würde auch schon
01.
@echo off & setlocal
02.
FOR /F "eol=# tokens=1-12 delims=;" %%a IN (imptest.csv) DO call :ProcessLine %%~d
03.
goto :eof
04.

05.
:ProcessLine
06.
echo #%1#
07.
goto :eof
genügen, da bei der Parameterübergabe die Leerzeichen als Trennzeichen gelten und damit weg fallen.

Grüße
bastla
Bitte warten ..
Mitglied: OFFLINE
10.01.2008 um 18:36 Uhr
Hallo bastla,

danke vielmals für deine bemühungen, ich hätte nicht gedacht, dass es so aufwendig ist, so etwas zu realisieren. Leider funktioniert das obere Skript nur bedingt, da es auch gelegentlich werte gibt, die leer sind. in der CVS-Datei sind sie dann nicht leer, sondern werden durch eine unbestimmte anzahl leertasten dargestellt.
wenn ich mir die schleifendurchläufe ansehe, sehe ich, dass bei jedem durchlauf der wert um ein leerzeichen verkürzt wird. Nach dem letzten Leerzeichen kommt ein Syntaxfehler.

man muss also noch abfangen, falls die variablen nur leertasten enthalten....

ich hoffe das ist nicht zuviel verlangt.
Bitte warten ..
Mitglied: bastla
10.01.2008 um 23:13 Uhr
Hallo OFFLINE!

Unter der Voraussetzung, dass die Trennzeichen (";") bei leeren Werten nicht unmittelbar aufeinander folgen, sondern dazwischen mindestens 1 Leerzeichen steht, sollte es genügen, nach ":loop1" folgende Zeile einzufügen:
01.
if not defined valtemp goto :NoValue
und nach der (bisher) letzten Zeile die Fehlerbehandlung für diesen Fall durchzuführen - Beispiel:
01.
:NoValue
02.
echo Es wurde kein Wert gefunden!
03.
goto :eof
Sollten allerdings zwei ";" unmittelbar aufeinander folgen, werden diese als nur ein Trennzeichen interpretiert und es wird dann der Wert des nächsten nicht leeren Feldes verwendet - sag Bescheid, falls das bei Dir zutreffen sollte.

Grüße
bastla
Bitte warten ..
Mitglied: OFFLINE
15.01.2008 um 00:23 Uhr
Hallo bastla,
übers wochenende bin ich nicht dazu gekommen mir deinen vorschlag anzusehen.
heute hab ich mich dann mal drangewagt. funktioniert auch bestens.

allerdings habe ich etwas anderes bemerkt:
kann es sein, dass die for-schleife den string in nur maximal 9 tokens cutten kann?
bei allen datensätzen funktioniert die batch bei den letzten 3 werten nicht. in den variablen steht dann der wert der ersten variabel mit einer angehängten laufenden nummer. Bsp:
Aus:
01.
  48810;   8; 13;MARTIN MEIER, SPIELWAREN   ;INH. MARTIN MEIER     ;35339  ;MARWALD       ;HAFFOELLERSTR. 198       ;INFO@SPIELWAREN.DE  ;07421/9737-0   ;07421/973735   ;  6;  
wird:
01.
#48810#
02.
#8#
03.
#13#
04.
#MARTIN MEIER, SPIELWAREN#
05.
#INH. MARTIN MEIER#
06.
#35339#
07.
#MARWALD#
08.
#HAFFOELLERSTR. 198#
09.
#INFO@SPIELWAREN.DE#
10.
#488100#
11.
#488101#
12.
#488102#
ich kann es mir leider nicht ganz erklären...

wenn die for-schleife nur 9 werte übergeben kann, brauche ich eine andere lösung.

Danke schonmals.
Bitte warten ..
Mitglied: bastla
15.01.2008, aktualisiert 18.10.2012
Hallo OFFLINE!

Besteht das Problem nach Berücksichtigung von https://www.administrator.de/forum/csv-datei-per-batch-in-einzelne-varia ... immer noch?

Falls ja, bitte Deinen Code posten ...

Grüße
bastla
Bitte warten ..
Mitglied: OFFLINE
15.01.2008 um 00:36 Uhr
hier mein code (in stark vereinfachter form):


import.bat
01.

02.
@echo off 
03.
setlocal
04.

05.
FOR /F "eol=# tokens=1-12 delims=;" %%a IN (imptest.csv) DO call :ProcessLine "%%~a" "%%~b" "%%~c" "%%~d" "%%~e" "%%~f" "%%~g" "%%~h" "%%~i" "%%~j" "%%~k" "%%~l" 
06.

07.
:ProcessLine
08.
echo %~1
09.
echo %~2
10.
echo %~3
11.
echo %~4
12.
echo %~5
13.
echo %~6
14.
echo %~7
15.
echo %~8
16.
echo %~9
17.
echo %~10
18.
echo %~11
19.
echo %~12
imptest.csv
01.
   1520;   2;  1;DRESCHEL                       ;INH. H. DRESCHEL               ;91745  ;HEMKLOR                       ;STAEDER STR. 21                ;                                         ;<07771/123223177>   ;FAX 07771/23791235 ;  6;  
02.
Bitte warten ..
Mitglied: bastla
15.01.2008, aktualisiert 18.10.2012
Hallo OFFLINE!

In diesem Fall muss ich auf https://www.administrator.de/forum/csv-datei-per-batch-in-einzelne-varia ... und den von miniversum verwendeten "shift"-Befehl verweisen, da tatsächlich bei %9 (oder %~9) Schluss ist.

Brauchst Du denn alle 12 Felder? Falls doch nicht, könntest Du ja die Buchstaben der nicht benötigten Felder nach "call :ProcessLine" weglassen ...

Grüße
bastla
Bitte warten ..
Mitglied: OFFLINE
15.01.2008 um 00:56 Uhr
Hallo bastla,

ja ich brauche alle 12
mit dem shift befehl funktioniert es allerdings. Hatte ich in der eile bei miniversum übersehen.
musste nur gerade feststellen, dass > und < in der csv nicht funktionieren.
aber ich denke dafür mache ich einen neuen thread auf, falls ich nichts finden sollte was aus der csv alle < und > entfernt. Hm am besten wäre es wohl alle "" >< und / \ zu entfernen, um möglichst allen problemen aus dem weg zu gehen.

danke vielmals für die Hilfe
Bitte warten ..
Mitglied: bastla
15.01.2008 um 01:24 Uhr
Hallo OFFLINE!

Als Zwischenschritt:
01.
@echo off
02.
setlocal
03.

04.
FOR /F "eol=# delims=" %%z IN (imptest.csv) DO set "Zeile=%%~z" & call :ProcessLine
05.
goto :eof
06.

07.
:ProcessLine
08.
set "Zeile=%Zeile:"=%"
09.
set "Zeile=%Zeile:<=%"
10.
set "Zeile=%Zeile:>=%"
11.
for /f "tokens=1-12 delims=;" %%a in ("%Zeile%") do (
12.
	set "var1=%%~a"
13.
	set "var2=%%~b"
14.
	set "var3=%%~c"
15.
	set "var4=%%~d"
16.
	set "var5=%%~e"
17.
	set "var6=%%~f"
18.
	set "var7=%%~g"
19.
	set "var8=%%~h"
20.
	set "var9=%%~i"
21.
	set "var10=%%~j"
22.
	set "var11=%%~k"
23.
	set "var12=%%~l"
24.
)
25.
echo %var1% %var2% %var3% %var4% %var5% %var6% %var7% %var8% %var9% %var10% %var11% %var12%
Grüße
bastla

P.S.: Und Du bist ganz sicher, dass es Batch sein soll, und nicht vielleicht VBS?
Bitte warten ..
Mitglied: bastla
15.01.2008 um 01:46 Uhr
... und so schon näher am Ergebnis:
01.
@echo off
02.
setlocal
03.

04.
FOR /F "eol=# delims=" %%z IN (imptest.csv) DO set "Zeile=%%~z" & call :ProcessLine
05.
goto :eof
06.

07.
:ProcessLine
08.
::Sonderzeichen entfernen
09.
set "Zeile=%Zeile:"=%"
10.
set "Zeile=%Zeile:<=%"
11.
set "Zeile=%Zeile:>=%"
12.

13.
::Leerzeichen entfernen
14.
:loop
15.
set "ZeileAlt=%Zeile%"
16.
set "Zeile=%Zeile: ;=;%"
17.
set "Zeile=%Zeile:; =;%"
18.
if "%Zeile:~0,1%"==" " set "Zeile=%Zeile:~1%"
19.
if "%Zeile:~-1%"==" " set "Zeile=%Zeile:~0,-1%"
20.
if "%Zeile%" neq "%ZeileAlt%" goto :loop
21.

22.
::Leere Felder durch "_" kennzeichnen (wegen Reihenfolge bei der Zerlegung)
23.
:loop2
24.
set "ZeileAlt=%Zeile%"
25.
set "Zeile=%Zeile:;;=;_;%"
26.
if "%Zeile%" neq "%ZeileAlt%" goto :loop2
27.

28.
for /f "tokens=1-12 delims=;" %%a in ("%Zeile%") do (
29.
	set "var1=%%~a"
30.
	set "var2=%%~b"
31.
	set "var3=%%~c"
32.
	set "var4=%%~d"
33.
	set "var5=%%~e"
34.
	set "var6=%%~f"
35.
	set "var7=%%~g"
36.
	set "var8=%%~h"
37.
	set "var9=%%~i"
38.
	set "var10=%%~j"
39.
	set "var11=%%~k"
40.
	set "var12=%%~l"
41.
)
42.
echo #%var1%#  #%var2%#  #%var3%#  #%var4%#  #%var5%#  #%var6%#  #%var7%#  #%var8%#  #%var9%#  #%var10%#  #%var11%#  #%var12%#
Grüße
bastla
Bitte warten ..
Mitglied: OFFLINE
15.01.2008 um 11:53 Uhr
hallo bastla,
dir scheint das ja richtig spass zu machen den leuten hier mit ihren problemen zu helfen

ich bin mir mittlerweile nicht mehr so sicher, ob ein vbs nicht vielleicht besser wäre. ich hätte nicht gedacht, dass es so aufwändig ist, eine csv einzulesen und in einzelne werte zu zerteilen.
ich werde mal geschwind alles zusammenbauen und dann hier posten. vielleicht hat jemand dann doch eine bessere idee.

MfG
Bitte warten ..
Mitglied: bastla
15.01.2008 um 13:03 Uhr
Hallo OFFLINE!

dir scheint das ja richtig spass zu machen den leuten hier mit ihren problemen zu helfen
Wie kommst Du denn auf die Idee?

ich werde mal geschwind alles zusammenbauen und dann hier posten.
Gute Strategie, falls damit gemeint ist, dass Du die weiteren Verarbeitungsschritte (bzw das eigentliche Ziel der Aktion) beschreiben willst ...

Grüße
bastla
Bitte warten ..
Mitglied: OFFLINE
16.01.2008 um 14:21 Uhr
so ich habe hier mal den gesamten code. ist doch mehr geworden als ich dachte.
im grunde will ich einen csv export komplett umformatieren um per csvde in ad einlesen zu können. dieser vorgang wird 1x alle 24h durchgeführt.

01.
@echo off 
02.
setlocal
03.
del temp.csv
04.
del temp2.csv
05.
del neuecsv.csv
06.
echo DN,objectClass,displayName,sn,streetAddress,postalCode,l,mail,
07.
telephoneNumber,facsimile TelephoneNumber,extensionAttribute1,
08.
extensionAttribute2,extensionAttribute3,extensionAttribute12 >> neuecsv.csv
09.

10.
FOR /F "delims=|" %%x IN (EXKD002.csv) DO echo %%x >> temp.csv
11.
more +1 temp.csv > temp2.csv
12.
dsrm "OU=ordner2,OU=ordner1,OU=Kontakte,DC=domain,DC=de" -subtree -exclude -noprompt
13.
FOR /F "eol=# delims=" %%z IN (temp2.csv) DO set "Zeile=%%~z" & call :ProcessLine1
14.
goto :eof
15.

16.
:ProcessLine1
17.
set "Zeile=%Zeile:"=%"
18.
set "Zeile=%Zeile:,=%"
19.
set "Zeile=%Zeile:<=%"
20.
set "Zeile=%Zeile:>=%"
21.

22.
FOR /F "eol=# tokens=1-12 delims=;" %%a IN ("%Zeile%") DO call :ProcessLine2 "%%~a" "%%~b" "%%~c"
23.
 "%%~d" "%%~e" "%%~f" "%%~g" "%%~h" "%%~i" "%%~j" "%%~k" "%%~l" 
24.
goto :eof
25.

26.
:ProcessLine2
27.
	set "sp1=%~1"
28.
	set "sp2=%~2"
29.
	set "sp3=%~3"
30.
	set "sp4=%~4"
31.
	set "sp5=%~5"
32.
	set "sp6=%~6"
33.
	set "sp7=%~7"
34.
	set "sp8=%~8"
35.
	set "sp9=%~9"
36.
	shift
37.
	set "sp10=%~9"
38.
	shift
39.
	set "sp11=%~9"
40.
	shift
41.
	set "sp12=%~9"
42.
	
43.
	:loop1
44.
	if not defined sp1 goto :sp1NoValue
45.
	if "%sp1:~0,1%"==" " set "sp1=%sp1:~1%" & goto :loop1
46.
        :loop2
47.
        if "%sp1:~-1%"==" " set "sp1=%sp1:~0,-1%" & goto :loop2
48.
	:sp1NoValue
49.
	:loop3
50.
	if not defined sp2 goto :sp2NoValue
51.
	if "%sp2:~0,1%"==" " set "sp2=%sp2:~1%" & goto :loop3
52.
	:loop4
53.
	if "%sp2:~-1%"==" " set "sp2=%sp2:~0,-1%" & goto :loop4
54.
	:sp2NoValue
55.
	:loop5
56.
	if not defined sp3 goto :sp3NoValue
57.
	if "%sp3:~0,1%"==" " set "sp3=%sp3:~1%" & goto :loop5
58.
	:loop6
59.
	if "%sp3:~-1%"==" " set "sp3=%sp3:~0,-1%" & goto :loop6
60.
	:sp3NoValue
61.
	:loop7
62.
	if not defined sp4 goto :sp4NoValue
63.
	if "%sp4:~0,1%"==" " set "sp4=%sp4:~1%" & goto :loop7
64.
	:loop8
65.
	if "%sp4:~-1%"==" " set "sp4=%sp4:~0,-1%" & goto :loop8
66.
	:sp4NoValue
67.
	:loop9
68.
	if not defined sp5 goto :sp5NoValue
69.
	if "%sp5:~0,1%"==" " set "sp5=%sp5:~1%" & goto :loop9
70.
	:loop10
71.
	if "%sp5:~-1%"==" " set "sp5=%sp5:~0,-1%" & goto :loop10
72.
	:sp5NoValue
73.
	:loop11
74.
	if not defined sp6 goto :sp6NoValue
75.
	if "%sp6:~0,1%"==" " set "sp6=%sp6:~1%" & goto :loop11
76.
	:loop12
77.
	if "%sp6:~-1%"==" " set "sp6=%sp6:~0,-1%" & goto :loop12
78.
	:sp6NoValue
79.
	:loop13
80.
	if not defined sp7 goto :sp7NoValue
81.
	if "%sp7:~0,1%"==" " set "sp7=%sp7:~1%" & goto :loop12
82.
	:loop14
83.
	if "%sp7:~-1%"==" " set "sp7=%sp7:~0,-1%" & goto :loop14
84.
	:sp7NoValue
85.
	:loop15
86.
	if not defined sp8 goto :sp8NoValue
87.
	if "%sp8:~0,1%"==" " set "sp8=%sp8:~1%" & goto :loop15
88.
	:loop16
89.
	if "%sp8:~-1%"==" " set "sp8=%sp8:~0,-1%" & goto :loop16
90.
	:sp8NoValue
91.
	:loop17
92.
	if not defined sp9 goto :sp9NoValue
93.
	if "%sp9:~0,1%"==" " set "sp9=%sp9:~1%" & goto :loop17
94.
	:loop18
95.
	if "%sp9:~-1%"==" " set "sp9=%sp9:~0,-1%" & goto :loop18
96.
	:sp9NoValue
97.
	:loop19
98.
	if not defined sp10 goto :sp10NoValue
99.
	if "%sp10:~0,1%"==" " set "sp10=%sp10:~1%" & goto :loop19
100.
	:loop20
101.
	if "%sp10:~-1%"==" " set "sp10=%sp10:~0,-1%" & goto :loop20
102.
	:sp10NoValue
103.
	:loop21
104.
	if not defined sp11 goto :sp11NoValue
105.
	if "%sp11:~0,1%"==" " set "sp11=%sp11:~1%" & goto :loop21
106.
	:loop22
107.
	if "%sp11:~-1%"==" " set "sp11=%sp11:~0,-1%" & goto :loop22
108.
	:sp11NoValue
109.
	:loop23	
110.
	if not defined sp12 goto :sp12NoValue
111.
	if "%sp12:~0,1%"==" " set "sp12=%sp12:~1%" & goto :loop23
112.
	:loop24
113.
	if "%sp12:~-1%"==" " set "sp12=%sp12:~0,-1%" & goto :loop24        
114.
	:sp12NoValue
115.

116.
	echo "CN=%sp4%,OU=ordner2,OU=ordner1,OU=Kontakte,DC=domain,DC=de",contact,"%sp4%",
117.
"%Sp5%","%sp8%","%sp6%","%sp7%","%sp9%","%sp10%","%sp11%","%sp1%","%sp2%",
118.
"%sp3%","%sp12%" >> neuecsv.csv
ein problem bleibt allerdings noch übrig:
in der letzten Zeile füge ich die werte in einer datei in der richtigen reihenfolge mit "%spx%" wieder zusammen (sp steht für spalte).
wenn eine spalte leer ist, dann steht ,"", in der datei. beim import nimmt er das dann nicht an. er erwartet bei leeren feldern ,, Ich benötige die "" aber, da es werte mit leerzeichen gibt.
ich habe ja die :spxNoValue für jede variable sobald diese leer ist. wie kann ich jetzt die letzte echo zeile verändern, dass wenn eine var keinen wert hat die "" nicht in die datei kommen?

DANKE,DANKE,DANKE für die super geniale Hilfe.
Bitte warten ..
Mitglied: bastla
16.01.2008 um 14:39 Uhr
Hallo OFFLINE!

wie kann ich jetzt die letzte echo zeile verändern, dass wenn eine var keinen wert hat die "" nicht in die datei kommen?
Bist Du sicher, dass die Anführungszeichen beim Import benötigt werden (denn für die "echo"-Zeile sind sie eigentlich nicht erforderlich)?

Ansonsten fiele mir folgender Workaround ein: Da jedes Feld (außer dem letzten) ein anschließendes "," benötigt, könntest Du dieses einfach dem Feldinhalt hinzufügen. Wenn ein Feld leer ist ("if not defined"), erhält es eben als einzigen Inhalt ein Komma. Natürlich müssten dann auch die erforderlichen Anführungszeichen bereits Feldinhalt werden [Edit] Unnötiger Schnellschuss ... [/Edit]

Besser (einfacher): Wo benötigt (bzw für alle nicht leeren Felder), die Anführungszeichen in das Feld aufnehmen. [Edit] Siehe unten [/Edit]

Grüße
bastla

[Edit] Idee für Workaround genauer formuliert. [/Edit]
Bitte warten ..
Mitglied: OFFLINE
16.01.2008 um 14:43 Uhr
ich benotige die anführungszeichen für das programm csvde, beim import.

wenn ein wert eine leertaste hat kommt ein fehler wenn keine ""

geht: "das ist ein test","bla","blubb",,,"bä"
geht nicht: das ist ein test,bla,blubb,,,bä
geht nicht:"das ist ein test","bla","blubb","","","bä"
Bitte warten ..
Mitglied: bastla
16.01.2008 um 14:52 Uhr
Hallo OFFLINE!

Dann am besten in der Art:
01.
	:loop1
02.
	if not defined sp1 goto :sp1NoValue
03.
	if "%sp1:~0,1%"==" " set "sp1=%sp1:~1%" & goto :loop1
04.
	set sp1="%sp1%"
Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Outlook & Mail

EMails werden nach 3 Monaten entfern - Einstellung

Frage von staybbOutlook & Mail5 Kommentare

Hallo, ich habe bei einem Postfach das Problem, dass in Outlook alle Mails älter wie 3 Jahre verscheinden und ...

Batch & Shell

Batch - PHP - W10 - w7 - w2k8r2

gelöst Frage von Xaero1982Batch & Shell4 Kommentare

Moin, ich hab ein PDF Script in dem ich eine Batchdatei aufrufe und Parameter übergebe. Ich benutze pdftk um ...

Webentwicklung

Wordpress: ob end flush

Frage von BadgerWebentwicklung4 Kommentare

Hallo Leute, ich habe wie viele andere bei Wordpress bei einigen Plugins (z.B. dieses) das Problem, dass bei aktivierten ...

Festplatten, SSD, Raid

RAID Controller mit Trim-Funktion, wie ermitteln

Frage von pixel24Festplatten, SSD, Raid11 Kommentare

Hallo zusammen, ich habe ein Hardware-RAID-Controller MegaRAID 9361 an dem ich ein RAID5 mit vier Samsung EVO850 SSD's betreibe ...

Neue Wissensbeiträge
Datenschutz

SiSyPHuS Win10: Analyse der Telemetriekomponenten in Windows 10

Tipp von freesolo vor 1 TagDatenschutz1 Kommentar

Alle die sich detailliert für die Datensammlung interessieren die unter Windows 10 stattfindet, sollten sich folgende Analyse des BSI ...

Sicherheit
Adminrechte dank Intel-Grafikkarte
Information von DerWoWusste vor 1 TagSicherheit1 Kommentar

ist das Advisory, welches beschreibt, welche Intel HD Graphics Modelle Sicherheitslücken haben, mit denen sich schwache Nutzer zu Admins ...

Internet

EU Urheberrechtsreform: Eingriff in die Internetkultur

Information von Frank vor 2 TagenInternet1 Kommentar

Liebe Besucherin, lieber Besucher, warum erscheint das obere Banner in allen Beiträgen? Aus Protest gegen Teile der geplanten EU-Urheberrechtsreform ...

Windows Server
Windows Backup - FilterManager Event 3
Tipp von NixVerstehen vor 3 TagenWindows Server

Hallo zusammen, ich bin kein gelernter ITler und auch beruflich nicht in dem Feld tätig. Wir setzen in unserem ...

Heiß diskutierte Inhalte
Router & Routing
Lancom-VPN-Client
Frage von FM28880Router & Routing15 Kommentare

Hallo zusammen, ich habe heute zwei Rechner mit einem Lancom VPN-Client eingerichtet. Die VPN-Verbindung wird aufgebaut und steht. Jedoch ...

Microsoft Office
Sharepoint 2016 mag keine Umlaute in .docx-Titeln
gelöst Frage von DerWoWussteMicrosoft Office14 Kommentare

Moin Kollegen. Nutzt hier jemand Sharepoint? Könnt Ihr, unabhängig von der Sharepointversion, bitte einen Test machen? Ladet ein .docx ...

Basic
VBS soll alle Ordner auswählen, die im Startmenu angezeigt werden
Frage von Senseless-CreatureBasic12 Kommentare

Guten Morgen - gibt es eine Möglichkeit, per VBS das Startmenu in Win10 zu modifizieren? Ich beherrsche VBS mittlerweile ...

Hyper-V
Hyper-V Manager startet, jedoch keine VM
Frage von NaleorHyper-V11 Kommentare

Hallo zusammen, auf meinem Windows 10 (Build 1703) Notebook von der Arbeit scheint Hyper-V plötzliche nicht mehr zu funktionieren. ...