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 Batch - Die ersten 3 Zeichen einer bestimmten Variablen oder einer TXT Datei auslesen

Mitglied: cced-de

cced-de (Level 1) - Jetzt verbinden

19.10.2008, aktualisiert 16.12.2008, 17937 Aufrufe, 14 Kommentare

Hallo liebe Admins und Programmierer sowie alle anderen Wissenden
Ich bin ziemlich neu hier und habe ein Problem.

Ich brauche ein script, mit dem ich die ersten 3 Zeichen aus einer Variablen auslesen und in eine neue Variable schreiben kann.

Beispiel:

FOR /F "eol=;" %%i in ('find "07=" SConfig.ini') do set Quelle=%%i auslesen.
%Quelle% beinhaltet dann D:\inetpub\vhosts\xyz.de\subdomains\ort\httpdocs\

Ich benötige aber in der weiterführenden Verarbeitung das angegebene Laufwerk ohne Pfad also nur D:\
Wie lese ich diese 3 Zeichen aus und schreibe sie in die neue Variable %Drive% ?

Schonmal vielen Dank für eure Mühe!!
LG CCED
Mitglied: bastla
19.10.2008 um 21:58 Uhr
Hallo cced-de und willkommen im Forum!

Du kannst zwar die ersten 3 Zeichen einer Variablen mit
set "Drive=%Quelle:~,3%"
einer neuen Variablen zuweisen, was Du aber vorhast solltest Du besser so lösen:
FOR /F "eol=; delims=" %%i in ('find "07=" SConfig.ini') do "set Drive=%%~di"
Näheres dazu: "for /?" (ziemlich am Ende des, zugegeben, nicht ganz kurzen Textes)

Wenn Du tatsächlich auch den "\" dabei haben willst (ich bevorzuge es, Anführungszeichen und "\" nach Bedarf zu setzen und daher grundsätzlich nicht in Variable aufzunehmen), dann eben:
FOR /F "eol=; delims=" %%i in ('find "07=" SConfig.ini') do "set Drive=%%~di\"
Grüße
bastla
Bitte warten ..
Mitglied: cced-de
20.10.2008 um 08:35 Uhr
Wow.. das ging schnell.
Danke für die Prompte Antwort !
Die Nächste Frage steht auch schon im Raum

LG
CCED
Bitte warten ..
Mitglied: xachsewag
21.10.2008 um 13:48 Uhr
Ich hätte da jetzt auch noch eine Frage zu dem Thema:

Ich will aus einer TXT File Zeile für Zeile auslesen und jede Zeile in eine Variable speichern.

TXT File:
h640 v480 b32 f60
h640 v480 b16 f75
h640 v480 b32 f60
h640 v480 b16 f75

Jetzt soll meine Batch die erste Zeile nehmen und in die Variable %res% schreiben. Danach führe ich etwas damit aus und dann soll die zweite Zeile in %res% geschreiben werden.

FOR /f %%f IN (resolutions.txt) DO echo %%f
soweit bin ich schonmal gekommen, aber er liest mir nur h640 aus und lässt den restlichen teil der Zeile weg.

set /a res=FOR /f %%f IN (resolutions.txt) DO echo %%f
so könnte ich das ja dann in %res% schreiben oder?

Kann mir da jemand helfen?
Danke schonmal
Bitte warten ..
Mitglied: bastla
21.10.2008 um 15:24 Uhr
Hallo xachsewag!

Etwa so:
01.
@echo off & setlocal 
02.
FOR /f "delims=" %%f IN (resolutions.txt) DO call :ProcessLine "%%f" 
03.
goto :eof 
04.
 
05.
:ProcessLine 
06.
echo Die Zeile: %~1 
07.
set "res=%~1" 
08.
echo Variableninhalt: %res% 
09.
goto :eof
Mit "delims=" sorgst Du dafür, dass die Zeile nicht an den Leerzeichen getrennt werden (diese sind, zusammen mit TAB, die Standardtrennzeichen in einer "for"-Schleife).

Im Unterprogramm ":ProcessLine" kannst Du die entsprechenden Verarbeitungsschritte vornehmen, wobei die Zeile als %1 (in Anführungszeichen, damit wiederum nicht an den Leerzeichen getrennt wird) bzw als %~1 (ohne Anführungszeichen) zur Verfügung steht.

Grüße
bastla
Bitte warten ..
Mitglied: juergi69
15.12.2008 um 13:57 Uhr
Hallo, ich hätte dazu auch eine Frage,
möchte mir ausnachname und vorname einen loginnamen basteln.
z.b test dummy d.test
dazu bräuchte ich das erste zeichen vom vornamen (bei mir %%j)
ich scheitere an dem Set "Rk-Loginname=%%%j:~,1%"
das input file schaut so aus:
Nachname;Vorname;Homeserver;Anmeldeskript;ServerProfil;Terminalprofil;Nebenstelle
Test;Dummy;Lvsfile01;login.bat;Ja;Ja;10888
Die Batch:
@Echo Off & setlocal EnableDelayedExpansion

cls
Set WorkDir=H:\NewUser
Set InputFile=newuser.txt
Set OutputDir=Output
Set TempDir=Temp

Set Def_Gruppe=Domänen_Benutzer

If Not Exist %WorkDir%\Output Md %OutputDir%
If Not Exist %WorkDir%\%TempDir% Md %TempDir%

for /f "delims=; tokens=1,2,3,4,5,6,7 skip=1" %%i in (%WorkDir%\%InputFile%) Do (
Echo Benutzerdaten:
Echo Nachname=%%i
Echo Vorname=%%j
Set "Rk-Loginname=%%%j:~,1%"
Echo Rk-Loginname=%Rk-Loginname%
Echo Anzeigename=%%i %%j
Echo E-Mail=%%j.%%i@st.roteskreuz.at
Echo Gruppen=%Def_Gruppe%
Echo Homedrive=H:
Echo Homeverz=\\%%k\users\%Rk-Loginname%
Echo Passwort=zufall
Echo ServerProfile=%%m
Echo Terminalserverprofile=%%n
Echo Loginscript=%%l
Echo Nebenstelle=%%o
Echo.


Echo Set RK-Nachname=%%i >%Workdir%\%OutPutDir%\%%i.bat
Echo Set RK-Vorname=%%j >>%Workdir%\%OutPutDir%\%%i.bat

)
danke
jürgen
Bitte warten ..
Mitglied: bastla
15.12.2008 um 14:42 Uhr
Hallo juergi69 und willkommen im Forum!

Du hast zwar "DelayedExpansion" eingeschaltet, verwendest sie aber nicht - dies und die Berücksichtigung der Tatsache, dass aus Laufvariablen der "for"-Schleifen keine Teilstrings gebildet werden können, sollte zu etwa folgendem (ungetesteten) Ansatz führen:
01.
@Echo Off & setlocal EnableDelayedExpansion 
02.
 
03.
cls 
04.
Set WorkDir=H:\NewUser 
05.
Set InputFile=newuser.txt 
06.
Set OutputDir=Output 
07.
Set TempDir=Temp 
08.
 
09.
Set Def_Gruppe=Domänen_Benutzer 
10.
 
11.
If Not Exist %WorkDir%\Output Md %OutputDir% 
12.
If Not Exist %WorkDir%\%TempDir% Md %TempDir% 
13.
 
14.
for /f "delims=; tokens=1,2,3,4,5,6,7 skip=1" %%i in (%WorkDir%\%InputFile%) Do ( 
15.
    Echo Benutzerdaten: 
16.
    Echo Nachname=%%i 
17.
    Echo Vorname=%%j 
18.
    Set "Vorname=%%j" 
19.
    Set "Rk-Loginname=!Vorname:~,1!%%i" 
20.
    Echo Rk-Loginname=!Rk-Loginname! 
21.
    Echo Anzeigename=%%i %%j 
22.
    Echo E-Mail=%%j.%%i@st.roteskreuz.at 
23.
    Echo Gruppen=%Def_Gruppe% 
24.
    Echo Homedrive=H: 
25.
    Echo Homeverz=\\%%k\users\!Rk-Loginname! 
26.
    Echo Passwort=zufall 
27.
    Echo ServerProfile=%%m 
28.
    Echo Terminalserverprofile=%%n 
29.
    Echo Loginscript=%%l 
30.
    Echo Nebenstelle=%%o 
31.
    Echo. 
32.
 
33.
    Echo Set RK-Nachname=%%i >%Workdir%\%OutPutDir%\%%i.bat 
34.
    Echo Set RK-Vorname=%%j >>%Workdir%\%OutPutDir%\%%i.bat 
35.
)
Grüße
bastla
Bitte warten ..
Mitglied: juergi69
15.12.2008 um 15:12 Uhr
hallo bastla,
danke für die schnelle antwort!
die EnableDelayedExpansion brauch ich glaube ich für die folgende if abfrage:
hab dabei noch ein kleines problem

......
Echo Nachname=%%i
Echo Vorname=%%j
Set "Vorname=%%j"
Set "Rk-Loginname=!Vorname:~,1!.%%i"
Echo Rk-Loginname=!Rk-Loginname!
net user !Rk-Loginname! >nul
If !ERRORLEVEL! EQU 0 Echo Error User !Rk-Loginname! bereits vorhanden!!!
Echo Anzeigename=%%i %%j
.....
das funktionert, ich möchte nun aus der for schleife raus, wenn der benutzer vorhanden ist

ziel des ganzen ist es, wie du sicher schon bemerkt hast, user mittels dsadd anzulegen,
z.b. Echo dsadd -samid !Rk-Loginname! -fn %%j -ln %%i -pwd zufall usw >>new_user.bat
nachdem die new_user.bat durch ist
noch ein zufälliges passwort setzen mit z.b. net user !Rk-Loginname! /random
homeverz anlegen + acl usw....

noch ne frage
was ist der unterschied zw. %OutputDir% und !Rk-Loginname! (einmal% einmal!)

lg
jürgen
Bitte warten ..
Mitglied: bastla
15.12.2008 um 15:33 Uhr
Hallo juergi69!

die EnableDelayedExpansion brauch ich glaube ich für die folgende if abfrage:
Dafür eigentlich nicht (aber für die Bildung des Loginnamens ) - Du kannst auch folgende Varaiante verwenden:
for /f "delims=; tokens=1,2,3,4,5,6,7 skip=1" %%i in (%WorkDir%\%InputFile%) Do ( 
    net user %%i >nul 2^>^&1 && ( 
        echo Error User !Rk-Loginname! bereits vorhanden 
    ) || ( 
        echo Echo Anzeigename=%%i %%j 
        echo ... 
)
Noch als Anmerkung: Wenn Du "delayedExpansion" verwendest, wird "!" als Variablenbegrenzer interpretiert und "verschwindet" daher (und bei paarweiser Verwendung auch alles dazwischen, wenn es nicht zufälliger Weise der Name einer existierenden Variable ist - es ist daher jedes einzelne Rufzeichen am Ende Deiner Fehlermeldung vergebene Liebesmüh ...
noch ne frage
was ist der unterschied zw. %OutputDir% und !Rk-Loginname! (einmal% einmal!)
Um innerhalb eines Blockes (Schleife, Klammern) in Batch veränderte Variableninhalte sofort ausgeben zu können, muss "delayedExpansion" erfolgen - und dann wird eben (siehe oben) anstelle von "%" das Rufzeichen als Variablenbegrenzer verwendet. %OutputDir% hast Du schon vor der Schleife festgelegt und es wird in der Schleife nicht verändert - es genügt daher die "Auflösung" (das Auslesen des Wertes) zu Beginn der Schleife (und muss nicht "delayed" vorgenommen werden).

Grüße
bastla
Bitte warten ..
Mitglied: juergi69
16.12.2008 um 10:20 Uhr
Hallo,
hab mir den Beitrag "Batch XP Zwei echos in einer Zeile in Datei umleiten" jetzt schon zig mal durchgelesen, ich bekomms aber nicht hin:

Echo If Not Exist \\%%k\user\!Rk-Loginname! Md \\%%k\user\!Rk-Loginname!>>%OutPutDir%\%OutputFile%

Echo Echo j|CACLS \\%%k\user\!Rk-Loginname! /G Domänen-Admins:F !Rk-Loginname!:C >>%OutPutDir%\%OutputFile%

Echo Das Passwort für !Rk-Loginname! ist !Def_Passwort! >>%OutPutDir%\%Passwd_File%

Zeile 1 und 3 klappen, Zeile 2 geht nicht, habs auf alle möglichen Arten versucht.
Bitte warten ..
Mitglied: bastla
16.12.2008 um 10:34 Uhr
Hallo juergi69!

Gehört zwar eigentlich nicht mehr in diesen Thread, aber gut ...

Wenn Du bestimmte Sonderzeichen in Batch nur ganz gewöhnlich ausgeben willst, musst Du diese mit einem vorangestellten "^" maskieren. Außerdem wird aus "%%" in Batch ein "%". Demzufolge:
Echo Echo j^|CACLS \\%%%%k\user\!Rk-Loginname! /G Domänen-Admins:F !Rk-Loginname!:C >>%OutPutDir%\%OutputFile%
Grüße
bastla
Bitte warten ..
Mitglied: PinkFLuffyUnicorn
29.04.2016 um 11:57 Uhr
Hi bastla, ich habe ein ähnliches vorhaben, ich will einen satz vom benutzer mit
01.
 set /p eingabe="Eingabe: "
eingeben lassen. der kann so lange sein wie er will.
nun kann ich ja mit
01.
set "EingabeNeu=%eingabe1:~,5%
die ersten 5 buchstaben auslesen.

also als beispiel
%eingabe1% = Hallo ich heise PFU
%EingabeNeu% = Hallo

wie kann ich jetzt die ersten 5 buchstaben aus der variabel %eingabe1% löschen?
Bitte warten ..
Mitglied: Biber
29.04.2016 um 13:18 Uhr
Moin PinkFLuffyUnicorn,

ich weiss ja nicht, ob es dafür nötig war, einen seit 6 Jahren erledigten Beitrag zu reanimieren.

Beispiel anm CMD-Prompt:
C:\Users\Biber>set /p eingabe="Eingabe: " 
Eingabe: hallo ich gebe irgendeinen langen String ein 
 
C:\Users\Biber>set ei 
eingabe=hallo ich gebe irgendeinen langen String ein 
 
C:\Users\Biber>set "eingabe=%eingabe:~5%" 
 
C:\Users\Biber>set ei 
eingabe= ich gebe irgendeinen langen String ein 
Grüße
Biber
Bitte warten ..
Mitglied: bastla
29.04.2016, aktualisiert um 16:36 Uhr
... wobei ja auch heute noch mit
set /?
(besonders interessant wird's in diesem Zusammenhang nach
Das Ersetzen von Umgebungsvariablen wurde folgendermaßen erweitert:
) die Online-Hilfe zur Verfügung stehen sollte ...

Grüße
bastla
Bitte warten ..
Mitglied: PinkFLuffyUnicorn
29.04.2016 um 18:20 Uhr
wollte halt keinen neuen thread öffnen :D
aber thx, dein systempfad ist nur da wegen @echo off, den kann ich einfach weghauen oder?
Bitte warten ..
Ähnliche Inhalte
PHP

TXT Datei auslesen und bestimmte Zeilen in Variable setzen

gelöst Frage von 126594PHP11 Kommentare

Hallo zusammen, vorweg muss ich sagen, ich bin (bis jetzt) absoluter Neuling was PHP angeht. Ich will aus einer ...

Batch & Shell

Batch um Zeichen aus erster und letzter Zeile einer TXT Datei zu löschen

Frage von Bobby0712Batch & Shell2 Kommentare

Hallo. Wie der Titel schon sagt suche ich eine möglichkeit wie ich aus einer TXT Datei aus der ersten ...

Batch & Shell

Batch - Bestimmter Inhalt einer Zeile aus einer txt oder ini als Variable

gelöst Frage von element22Batch & Shell2 Kommentare

Hallo zusammen, leider finde ich den Fehler nicht. Na gut, vielleicht sitzt er vorm Monitor, aber das ist etwas ...

Batch & Shell

(BATCH:) Zeilenweise Txt auslesen und in eine Variable speichern

gelöst Frage von NincedBatch & Shell20 Kommentare

Hallo Leute, Ich weiß, es ist ein alter Hut, aber ich habe da ein paar Fragen bezüglich der for-Schleife ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 1 TagHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 1 TagRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 2 TagenSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 2 TagenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Router & Routing
Mikrotik: Routing zwischen Interfaces mit Geräten ohne Gateway
Frage von TonLichtVideoRouter & Routing18 Kommentare

Hallo zusammen, ich komme aus dem Veranstaltungstechnik Bereich und habe zwei Netze um verschiedene Hardware zu Remoten. CONTROL1 192.168.1.0/24 ...

Linux Netzwerk
Raspberry Pi 3: WLAN Power save deaktivieren
Frage von nordie92Linux Netzwerk14 Kommentare

Moin moin, mein Raspberry Pi 3 Model B benötigt eine dauerhaft aktive WLAN-Verbindung. Leider bricht die WLAN-Verbindung nach einigen ...

SAN, NAS, DAS
Entscheidung SAN Dell oder HP
Frage von VincorSAN, NAS, DAS13 Kommentare

Hallo, wir wollen uns für unsere Hyper V Umgebung eine neue SAN Anschaffen. Es laufen 30 VM's darunter, DC; ...

Vmware
Server 2008 r2 vmware terminalserver
Frage von MasterCVmware10 Kommentare

Guten Abend zusammen, ich hoffe , dass einer von euch mir weiterhelfen kann ,bei meinem kack Problem ! Ist ...