Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Bat - Schleife aus txt Datei

Frage Entwicklung Batch & Shell

Mitglied: hoffi3d

hoffi3d (Level 1) - Jetzt verbinden

16.04.2014, aktualisiert 10:19 Uhr, 1532 Aufrufe, 16 Kommentare, 2 Danke

Hallo,

ich habe mir ein kleines Sicherungsscript gebastelt, und würde dieses gerne vereinfachen.
Im Augenblick habe ich für jeden zu sichernden Rechner einen Abschnitt in der BAT.
Schön wäre es aber wenn ich die Eckdaten (Rechnername, Adresse, Infos) in eine .txt schreiben könnte und die Schleife, Zeile für Zeile abläuft:

Hier mal der "Code" für jeden einzelnen PC. Fett ist alles was sich von PC zu PC ändert
Für weitere Vereinfachungen bin ich natürlich offen!



01.
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>> **Rechnername** - **Nutzername** %date% %time% <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" >> %errordatei% 
02.
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>> **Rechnername** - **Nutzername** %date% %time% <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" >> %logdatei% 
03.
ping -n 1 **Rechnername** >> %logdatei% 2>&1 
04.
IF ERRORLEVEL == 1 ( 
05.
  echo. 
06.
  ECHO !nicht pingbar!nicht pingbar!nicht pingbar!nicht pingbar!nicht pingbar!nicht pingbar!nicht pingbar!nicht pingbar!nicht pingbar!nicht pingbar! >> %errordatei% 
07.
  echo. 
08.
 
09.
   
10.
  ) ELSE ( 
11.
    echo. 
12.
  ECHO [_/] Ping >> %errordatei% 
13.
  net use U: \\**Rechnername**\d /user:%nutzer% %passwort% >> %logdatei% 2>&1 
14.
IF ERRORLEVEL == 1 ( 
15.
  echo. 
16.
  ECHO !Netzlaufwerk wurde nicht eingebunden!Netzlaufwerk wurde nicht eingebunden!Netzlaufwerk wurde nicht eingebunden!Netzlaufwerk wurde nicht eingebunden!Netzlaufwerk wurde nicht eingebunden! >> %errordatei% 
17.
  echo. 
18.
 
19.
   
20.
  ) ELSE ( 
21.
    echo. 
22.
  ECHO [_/] Netzlaufwerk >> %errordatei% 
23.
  ROBOCOPY U:\ D:\sicherung\**Rechnername**\D /XD "System Volume Information" "$RECYCLE.BIN" /XF MEMORY.DMP /MIR /TEE /ETA /COPY:DAT /a-:hs /r:0 /w:1 /NP /NFL /NDL /NJH >> %logdatei% 
24.
    IF ERRORLEVEL == 16 ( 
25.
  echo. 
26.
  ECHO !es wurde nichts gesichert!es wurde nichts gesichert!es wurde nichts gesichert!es wurde nichts gesichert!es wurde nichts gesichert!es wurde nichts gesichert!es wurde nichts gesichert!es wurde nichts gesichert!es wurde nichts gesichert!es wurde nichts gesichert! >> %errordatei% 
27.
  echo. 
28.
 
29.
   
30.
  ) ELSE ( 
31.
    echo. 
32.
  ECHO [_/] gesichert >> %errordatei% 
33.
  echo. 
34.
    
35.
36.
  net use u: /delete /yes 
37.
  echo. 
38.
    
39.
40.
  echo. 
41.
    
42.
    )


P.S. wenn mir jemand erklärt wie ich Code mit Zeilenzahl und in einer Tabelle im Forum poste wäre ich Happy ;)
Mitglied: Xaero1982
16.04.2014 um 09:53 Uhr
Hi,

so ganz blick ichs nicht was du da eigentlich machst? Wozu soll diese "Sicherung" gut sein? Wieso benutzt du nicht die Boardmittel von Windows?
Von welchem OS reden wir hier?

Benutze vor dem Code den <"code"> Tag und danach den <"/code"> Tag. Jeweils ohne " ".

Gruß
Bitte warten ..
Mitglied: hoffi3d
16.04.2014 um 10:03 Uhr
hallo,

es werden alle PC´s im Netzwerk gesichert sprich auf meinen PC kopiert und von dort auf eine USB-Festplatte!
Was für Boardmittel existieren dafür????

Von Win 7

01.
 Code 
Cool ;)
Bitte warten ..
Mitglied: hoffi3d
16.04.2014 um 10:21 Uhr
erledigt.

Windowssicherung hilft mir aber meines Wissens nach nicht ferne Rechner übers Netzwerk zu sichern und die Daten auf eine USB Festplatte zu sichern.
Ich sichere hier 20 Rechner!
Ausserdem müssen die Dateien einzeln abrufbar sein, also ich brauche keine Image sondern jede Datei einzeln...!

Das Script funktioniert ja 1a, ich brauche nur eine Variante wo ich die Variablen also Rechnername etc. aus einer txt Datei ziehen kann und die Schleife Zeile für Zeile der TXT Datei durchläuft!
Bitte warten ..
Mitglied: colinardo
16.04.2014, aktualisiert um 12:08 Uhr
Hallo hoffi3d,
kleines Beispiel wenn deine Textdatei z.B. so aussieht (Spalten via Semikolon getrennt):
01.
PC01;maxmustermann;Passw0rd 
02.
PC02;henriettemuster;Passw0rd 
03.
PC03;seppmeier;Passw0rd
kannst du sie hiermit durchlaufen:
01.
for /f "usebackq tokens=1-3 delims=;" %%a in ("deineDatei.txt") DO @( 
02.
  echo Rechnername: %%a / Nutzername: %%b / Password: %%c 
03.
  REM Hier machst du Backup für den jeweiligen Rechner 
04.
)
Grüße Uwe
Bitte warten ..
Mitglied: Xaero1982
16.04.2014, aktualisiert um 10:41 Uhr
Auch das geht problemlos wenn du es mal eingerichtet hast und der Zugriff auf einzelne Dateien geht auch durch doppelklick auf die Sicherung

Aber seis drum... was der "Kunde" will, soll der "Kunde" haben.

An den Anfang der Batch:
01.
FOR /F "tokens=1,2,3 delims=," %%i in (test.txt) do ( 
02.
set nutzer=%%i 
03.
set rechnername=%%j 
04.
set passwort=%%k
Ans Ende der Batch:
Sollte theoretisch klappen. Auch wenn ich das Gefühl habe, dass du uns was verschweigst ... das ist nicht die ganze Batch, weil deine Variablen fehlen etc.

Gruß
Edit: Da war der Colinardo schneller ... meine Textdatei ist mit Nutzer,Rechnername,PW aufgebaut und mit einem Komma getrennt.
Bitte warten ..
Mitglied: colinardo
16.04.2014, aktualisiert um 10:42 Uhr
Zitat von hoffi3d:
es werden alle PC´s im Netzwerk gesichert sprich auf meinen PC kopiert und von dort auf eine USB-Festplatte!
Was für Boardmittel existieren dafür????
Windows Backup kann auch auf Netzlaufwerke sichern ... und lässt sich ebenfalls über die Kommandozeile steuern:
wbadmin start backup -allCritical -vssfull -quiet -noVerify -include:c: -backupTarget:\\Servername\Freigabe"
und in das Backup lässt sich auch hineinschauen da in eine VHD gesichert wird, die man unter Windows als Laufwerk mounten kann wenn man möchte.
Bitte warten ..
Mitglied: hoffi3d
16.04.2014 um 11:43 Uhr
Hallo,

erstmal vielen vielen Dank.

Naja verschweigen ist das falsche Wort.
Ich habe den WOL Part herausgelassen, den Part wo ich die Variablen setze und die blat.exe wo die eMails versandt werden.
Machte für mich jetzt keine Relevanz oder?

Ich habe jetzt

01.
for /f "usebackq delims=;" %%a in (%rechner_datei%) DO @(  
02.
set PC_Name=%%a 
03.
set User_Name=%%b 
04.
set placeholder=%%c 
05.
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>> %PC_Name% - %User_Name% %date% %time% <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" >> %errordatei% 
06.
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>> %PC_Name% - %User_Name% %date% %time% <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" >> %logdatei% 
07.
ping -n 1 %PC_Name% >> %logdatei% 2>&1 
08.
IF ERRORLEVEL == 1 ( 
09.
  echo. 
10.
  ECHO !nicht pingbar!nicht pingbar!nicht pingbar!nicht pingbar!nicht pingbar!nicht pingbar!nicht pingbar!nicht pingbar!nicht pingbar!nicht pingbar! >> %errordatei% 
11.
  echo. 
12.
 
13.
   
14.
  ) ELSE ( 
15.
    echo. 
16.
  ECHO [_/] Ping >> %errordatei% 
17.
  net use U: \\%PC_Name%\d /user:%nutzer% %passwort% >> %logdatei% 2>&1 
18.
IF ERRORLEVEL == 1 ( 
19.
  echo. 
20.
  ECHO !Netzlaufwerk wurde nicht eingebunden!Netzlaufwerk wurde nicht eingebunden!Netzlaufwerk wurde nicht eingebunden!Netzlaufwerk wurde nicht eingebunden!Netzlaufwerk wurde nicht eingebunden! >> %errordatei% 
21.
  echo. 
22.
 
23.
   
24.
  ) ELSE ( 
25.
    echo. 
26.
  ECHO [_/] Netzlaufwerk >> %errordatei% 
27.
  ROBOCOPY U:\ D:\sicherung\%PC_Name%\D /XD "System Volume Information" "$RECYCLE.BIN" /XF MEMORY.DMP /MIR /TEE /ETA /COPY:DAT /a-:hs /r:0 /w:1 /NP /NFL /NDL /NJH >> %logdatei% 
28.
    IF ERRORLEVEL == 16 ( 
29.
  echo. 
30.
  ECHO !es wurde nichts gesichert!es wurde nichts gesichert!es wurde nichts gesichert!es wurde nichts gesichert!es wurde nichts gesichert!es wurde nichts gesichert!es wurde nichts gesichert!es wurde nichts gesichert!es wurde nichts gesichert!es wurde nichts gesichert! >> %errordatei% 
31.
  echo. 
32.
 
33.
   
34.
  ) ELSE ( 
35.
    echo. 
36.
  ECHO [_/] gesichert >> %errordatei% 
37.
  echo. 
38.
    
39.
40.
  net use u: /delete /yes 
41.
  echo. 
42.
    
43.
44.
  echo. 
45.
    
46.
47.
	 
48.
49.
 
50.
Pause
Die Schleife läuft einmal durch, lässt aber die Variablen leer, die .txt sieht wie folgt aus =>
rechnername1;name1;placeholder
rechnername2;name2;placeholder
rechnername3;name3;placeholder
Bitte warten ..
Mitglied: colinardo
16.04.2014, aktualisiert um 11:52 Uhr
Dachte ich mir doch das das kommt, habe dich aber erst mal gegen die Wind fahren lassen .... Du musst beim setzen von Variablen innerhalb einer FOR-Schleife vorher die verzögerte Variablenerweiterung aktivieren
01.
@echo off & setlocal ENABLEDELAYEDEXPANSION
und dann innerhalb deiner Schleife die Variablen mit Ausrufezeichen anstatt Prozentzeichen ansprechen
echo !deineVar!
und die Errorlevel solltest du dann ebenfalls so überprüfen !ERRORLEVEL!
Bitte warten ..
Mitglied: Xaero1982
16.04.2014, aktualisiert um 12:02 Uhr
Colinardo, womit hängt das zusammen, weil ich hab das getestet wie ich es oben geschrieben habe und ich hab problemlos die Werte die in der Textdatei stehen angezeigt bekommen.

Gruß
edit: ah ok bei der Ausgabe kommt nix wenn ich zwei Zeilen einfüge. Bei einer gehts, wenn ich es außerhalb der For-Schleife ausgebe, aber dann auch nur der letzte Wert. Man lernt ja nie aus
Bitte warten ..
Mitglied: hoffi3d
16.04.2014 um 11:58 Uhr
;)

sehr viel besser jedoch bekomme ich jetzt noch

%b statt der zweiten "spalte" der .txt zurück!

">>>>>>>>>>>>>>>>>>>>>>>>>>>>>> *rechnername* - %b 16.04.2014 11:54:56,15 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"

bin ich noch etwas ratlos

01.
for /f "usebackq delims=;" %%a in (%rechner_datei%) DO @(  
02.
set PC_Name=%%a 
03.
set User_Name=%%b 
04.
set placeholder=%%c 
05.
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>> !PC_Name! - !User_Name! %date% %time% <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" >> %errordatei%
Bitte warten ..
Mitglied: colinardo
16.04.2014, aktualisiert um 12:12 Uhr
noch ein tokens=1-3 dazu, war mir oben entfallen, sorry:
for /f "usebackq tokens=1-3 delims=;" %%a in ("%rechner_datei%") DO @(
Bitte warten ..
Mitglied: hoffi3d
16.04.2014 um 13:19 Uhr
funktioniert 1a! Danke
für eine 4te Spalte müsste ich es jetzt ändern auf:
01.
 "usebackq tokens=1,2,3,4 delims=;"
oder?
Bitte warten ..
Mitglied: colinardo
16.04.2014, aktualisiert um 13:58 Uhr
ja, oder
tokens=1-4
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen, Merci.
Die Hauptfrage ist ja beantwortet.

Grüße Uwe
Bitte warten ..
Mitglied: hoffi3d
16.04.2014 um 17:08 Uhr
Hallo,

alles gelöst ich danke euch beiden!
Bitte warten ..
Mitglied: bastla
16.04.2014, aktualisiert 17.04.2014
@ colinardo
und die Errorlevel solltest du dann ebenfalls so überprüfen !ERRORLEVEL!
ist natürlich richtig - weshalb es bei hoffi3d trotzdem funktioniert liegt daran, dass der Interpreter clever genug ist, die unnötigen "==" einfach zu ignorieren und daher de facto die Abfrage
IF ERRORLEVEL 1 (
ausführt. Dass damit nicht auf "= 1", sondern auf ">= 1" geprüft wird, dürfte nicht weiter stören ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Webentwicklung
HTML Output in eine txt Datei mit VisualBasicScript (2)

Frage von coca22COCA zum Thema Webentwicklung ...

Batch & Shell
Merkwürdige Zeilenformatierung in txt Datei (3)

Frage von miczar zum Thema Batch & Shell ...

Batch & Shell
gelöst In Batchdatei Variablen befüllen - mit Werten aus einer TXT-Datei (6)

Frage von donnyS73lb zum Thema Batch & Shell ...

Batch & Shell
gelöst Einzelne Zeilen in txt Datei speichern und auslesen (7)

Frage von noah1400 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...