kriait
Goto Top

Problem mit "username" abfrage in Batch Dateien

Hallo,
ich habe eine Batch-Datei erstellt in der ein Ordner auf dem Desktop erstellt werden soll. Der Batch soll auf unterschiedlichen Maschinen laufen und mit unterschiedlichen Usern, daher auch die %username% Abfrage.

Nun zum Problem, einer der User hat einen Namen mit Leerzeichen (Hans Wurst) bei der Abfrage und dem erstellen der Ordner ergibt sich dann da Problem, dass der Batch nach hans aufhort und somit natürlich nichts vernünftiges erstellt!

hier mein aktueller Code:

mkdir C:\Users\%username%\Desktop\%VAR1%-%cdate%
mkdir C:\Users\%username%\Desktop\%VAR1%-%cdate%\Parts

Danke für eure Hilfe

Content-Key: 306534

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

Printed on: May 7, 2024 at 19:05 o'clock

Mitglied: 129413
Solution 129413 Jun 08, 2016 updated at 11:25:49 (UTC)
Goto Top
Dafür gibt's "Anführungszeichen" ... und das "C:\Users\%username%" würde ich gleich durch %USERPROFILE% ersetzen.
Was das deine zwei Zeilen auf das hier reduziert:
mkdir "%USERPROFILE%\Desktop\%VAR1%-%cdate%\Parts"
Gruß sykbird
Member: agowa338
Solution agowa338 Jun 08, 2016 at 23:49:20 (UTC)
Goto Top
Das mit %USERPROFILE% hat noch zusätzlich den Vorteil, dass es selbst bei Server gespeicherten Profilen oder bei Umgeleiteten Speicherorten Funktioniert, wo hingegen "C:\Users\%username%" fehlschlagen würde.
Member: KriAIT
KriAIT Jun 13, 2016 updated at 08:38:53 (UTC)
Goto Top
Hallo,
hat leider nicht funktioniert, ich kopiere mal den gesamten Code rein vielleicht hab ich ja noch nen anderen Fehler!

Danke schon mal für die Mühe!!
@echo off

REM                 ORDNER in den gespeichert wird
SET VAR1=B2000120-Rechner_24_Gen2

REM                 BAUGRUPPE
SET VAR2=B2000120*

REM                 Parts
SET VAR3=E2000002*
SET VAR4=E2000025*
SET VAR5=E2000026*
SET VAR6=E2000091*
SET VAR7=
SET VAR8=E2000110*
SET VAR9=E2000111*
SET VAR10=E2000112*
SET VAR11=
SET VAR12=E2000114*
SET VAR13=E2000121*
SET VAR14=E2000125*
SET VAR15=


REM             - Programm zur Ausführung starten! -
call ZZZ_Programm.bat

exit


@echo off
REM                                                 Erstellt durch KriA - Andreas Kristen
REM      -Datum Rückwärts erzeugen
set cdate=%date:~-4%_%date:~-7,2%_%date:~-10,2%

REM      -VORBEREITEN-

SET VAR999="%userprofile%\Desktop\%VAR1%-%cdate%"  

mkdir "%VAR999%"  
mkdir "%VAR999%\Parts"  

REM      -AUSFÜHREN-

copy "DB_BGR\%VAR2%*.*" "%VAR999%\"  

copy "DB_parts\%VAR3%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR4%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR5%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR6%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR7%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR8%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR9%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR10%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR11%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR12%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR13%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR14%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR15%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR16%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR17%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR18%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR19%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR20%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR21%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR22%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR23%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR24%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR25%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR26%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR27%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR28%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR29%.*" "%VAR999%\Parts\"  
copy "DB_parts\%VAR30%.*" "%VAR999%\Parts\"  

REM      -Ordner öffen-

start "" "%VAR999%"  

pause
exit
[Edit Biber] Codetags. [/Edit]
Mitglied: 129413
Solution 129413 Jun 13, 2016 updated at 08:09:31 (UTC)
Goto Top
Weil du die Anführungszeichen an der falschen stelle setzt deswegen!
set "VAR999=%userprofile%\Desktop\%VAR1%-%cdate%"  
Bei dir landen sonst die Anführungszeichen mit in der Variablen und weiter unten machst du dann nochmal welche Drum deswegen funktioniert das nicht. Wenn du es wie oben setzt werden Leerzeichen berücksichtigt und es landen keine Anführungszeichen in der Variablen.
Member: KriAIT
KriAIT Jun 15, 2016 at 11:13:36 (UTC)
Goto Top
Jetzt tuts!! VIELEN Dank für die Hilfe ich bin leider nur sehr selten an solchen Programmen dran und wenn dann auch nur kleine Hürden kommen wirds schon kniffelig!

Danke nochmal und Grüße!