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 Batchscripts

Mitglied: perseus21

perseus21 (Level 1) - Jetzt verbinden

18.03.2014 um 15:26 Uhr, 1776 Aufrufe, 6 Kommentare, 2 Danke

Hallo,
ich suche nach einer Lösung um mit CMD folgendes Problem zu lösen:

Ich möchte, daß der Benutzer mittels einer set /p Eingabe mehrere Eingaben (Rechnernamen) macht, diese dann in eine
Datei geschrieben werden und dann vom System aus der Datei benutzt werden können.

Bsp: Ein Benutzer gibt mehrere Computernamen an, die dann das System anpingen kann.

Gruß
Dirk
Mitglied: bastla
18.03.2014 um 16:35 Uhr
Hallo perseus21 und willkommen im Forum!

Ungetestet etwa so:
01.
@echo off & setlocal 
02.
set "Datei=D:\Deine Liste.txt" 
03.
 
04.
del "%Datei%" 2>nul 
05.
:Loop 
06.
set "Ein=" 
07.
set /p Ein=Bitte einen Rechnernamen eingeben oder nur ENTER für Ende der Eingabe:  
08.
if not defined Ein goto :EndeEingabe 
09.
setlocal enabledelayedexpansion 
10.
>>"%Datei%" echo !Ein! 
11.
endlocal 
12.
goto :Loop 
13.
 
14.
:EndeEingabe 
15.
cls 
16.
echo Eingegeben wurde: 
17.
type "%Datei%"
Grüße
bastla
Bitte warten ..
Mitglied: rubberman
18.03.2014, aktualisiert um 17:58 Uhr
Hallo perseus21,
auch von mir ein Willkommen.

bastla hat ja bereits eine gute Vorlage gegeben, wie man Benutzereingaben in eine Datei schreiben kann. Aber was man unter ...
... und dann vom System aus der Datei benutzt werden können ...
... verstehen soll, erschließt sich mir nicht.
Redest du vom Betriebssystem? Und wie willst du dem "System" beibringen, irgendeine x-beliebige Datei zu "benutzen" oder deren Inhalte anzupingen? Da fehlt mir noch ein bisschen Info und vor allem was am Ende dabei als Output herauskommen soll. (Oder hast du da schon konkrete Ansätze und benötigst für diesen Teil deines Problemchens keinen Support?)

Grüße
rubberman
Bitte warten ..
Mitglied: perseus21
19.03.2014 um 10:06 Uhr
Guten morgen,
erstmal vielen Dank für die sehr schnellen Antworten.
Also, Hintergrund ist folgender:

Ich möchte über CMD mehrere Rechnernamen eingeben, diese sollen in eine Textdatei abgelegt werden.
Das Script soll jetzt einen Registrywert in die Registry der in der Liste stehenden PC´s schreiben.

So sieht momentan meine unvollständige bat aus: (Bitte nicht wundern, bin blutiger Anfänger was sripten/batchen betrifft)

@echo off & setlocal
CLS
set "datei=\\Servername\Pfad\liste.txt" ;von bastla übernommen
del %datei% 2>NUL ;von bastla übernommen
echo;
echo >>> Unterbinden von extrem langen Anmeldezeiten bei Erstanmeldung an einem Win XP Rechner <<<
echo;
set "Ein=" ;von bastla übernommen

echo Auf welchen Rechnern soll der Registry Wert gesetzt werden?

:pcs
set /p apc=Computername:
if not defined apc goto :ende_neg
setlocal enabledelayedexpansion ;von bastla übernommen
>>%datei% echo !apc! ;von bastla übernommen
endlocal ;von bastla übernommen
goto :pcs

:reg
echo j| reg add "\\%apc%\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v BufferPolicyReads /t REG_DWORD /d 1 >NUL
echo;
echo;
goto :ende_pos

:ende_neg
echo;
echo Es wurden keine Eingaben gemacht...
pause
exit

:ende_pos
echo Žnderungen wurden erfolgreich vollzogen...
pause
exit

Nachdem ich die Zeilen von bastla übernommen habe kann ich mehrere Eingaben machen. Nur funktioniert die Schleife nicht richtig. Wenn ich
nur ENTER drücke bleibt er in der Schleife und schreibt die letzte Eingabe in die Datei.

Klarer geworden?

Gruß
Dirk
Bitte warten ..
Mitglied: perseus21
19.03.2014 um 10:13 Uhr
Hallo Bastla,
erstmal guten morgen und vielen Dank für die schnelle Antwort.
Was bezwecken folgende Zeilen?
Habe meine *.bat mit deinen Angaben erweitert und im Kommentar von rubberman eingestellt.

Was bezwecken folgende Zeilen?:

1) set"Ein="
2) setlocal enabledelayexpansion
3) >>"%Datei%" echo !Ein!

Gruß
Dirk
(perseus21)
Bitte warten ..
Mitglied: bastla
19.03.2014 um 13:27 Uhr
Hallo perseus21!
set"Ein="
Damit wird der Inhalt der Variablen Ein gelöscht, sodass bei Eingabe von nur Enter die Variable tatsächlich leer ist (und nicht den vorherigen Wert behält).
setlocal enabledelayexpansion
>>"%Datei%" echo !Ein!
Dazu gehört auch noch das "endlocal"; durch die Verwendung der "delayedExpansion" werden auch Sonderzeichen wie "&" oder "|", die ansonsten in Batch eine besondere Bedeutung haben, als "gewöhnlicher" Text behandelt und unverändert in die Datei geschrieben, ohne ev Fehler zu verursachen.

Die "echo"-Zeile sorgt für das Schreiben der Eingabe in die Datei (mit ">>" wird die neue Zeile angefügt, bei nur einem Umleitungszeichen würde die Datei immer überschrieben und daher am Ende nur den letzten eingegebenen Wert enthalten. Wegen der genannten "delayedExpansion" muss anstelle des üblichen Prozentzeichens (also "%Ein%") der Variablenname mit "!" begrenzt werden.

Dass die Ausgabe-Umleitung schon vor dem "echo" steht, beugt einem ev Problem der folgenden Art vor: Wenn %Ein% (bzw !Ein!) etwa den Inhalt "Rechner 2" hätte, würde ein nachgestelltes ">>"%Datei%"" als Ziel für die Ausgabe der Fehlermeldung auf "Kanal 2" (also "2>>") interpretiert und daher nix in die Datei schreiben - kannst Du einfach testen, indem Du direkt in CMD eingibst:
echo Rechner 2>>"Test.txt"
Die Alternative, zwischen "2" und ">>" ein Leerzeichen zu setzen, würde zwar diesen Effekt vermeiden, dafür aber das Leerzeichen mit in die Datei schreiben.
Jetzt zu Deinem Code: Wenn Du anscheinend sofort nach der Eingabe das Schreiben in die Registry veranlassen möchtest (mit dem Risiko, dass etwa der Zielrechner nicht eingeschaltet wäre), brauchst Du eigentlich die Datei gar nicht (oder allenfalls als Log, welche Rechner bearbeitet wurden) - in diesem Fall sollte das (ungetestet) etwa so gehen:
01.
echo off & setlocal 
02.
CLS 
03.
set "datei=\\Servername\Pfad\liste.txt" 
04.
del "%datei%" 2>NUL 
05.
echo; 
06.
echo >>> Unterbinden von extrem langen Anmeldezeiten bei Erstanmeldung an einem Win XP Rechner <<< 
07.
echo; 
08.
 
09.
echo Auf welchen Rechnern soll der Registry Wert gesetzt werden? 
10.
 
11.
:pcs 
12.
set "Ein=" ;von bastla übernommen 
13.
set /p apc=Computername: 
14.
if not defined apc goto :ende 
15.
echo j| reg add "\\%apc%\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v BufferPolicyReads /t REG_DWORD /d 1 >NUL || goto :pcs 
16.
setlocal enabledelayedexpansion 
17.
>>%datei% echo !apc! 
18.
endlocal 
19.
goto :pcs 
20.
 
21.
:ende 
22.
if exist "%Datei%" ( 
23.
    echo Žnderungen wurden erfolgreich vollzogen: 
24.
    type "%Datei%" 
25.
) else ( 
26.
    echo Keine Žnderungen vorgenommen! 
27.
28.
pause
Willst Du zunächst nur die Rechnernamen sammeln, müsstest Du die Zeile 15 in einer "for /f"-Schleife, welche die erstellte Datei ausliest, platzieren; diese Schleife könnte entweder unmittelbar nach ":ende" oder in einem zweiten Batch stehen.

Grüße
bastla
Bitte warten ..
Mitglied: perseus21
31.03.2014 um 08:41 Uhr
Bastla & Rubberman,
vielen Dank für eure schnelle und kompetente Hilfe. Jetzt funktioniert es so, wie ich es möchte.

Gruß
Dirk
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Rechteveragbe über Batchscript
gelöst Frage von sanaitBatch & Shell7 Kommentare

Moin Moin, ich habe mir ein Laufwerk gemappt und will nun dort in einem Script die Rechte in den ...

Batch & Shell

Batchscript lässt sich nicht mit der Aufgaben Planung ausführen

gelöst Frage von MultiStormBatch & Shell18 Kommentare

Hallo ich fange erstmal mit den Rahmenbedingungen an Server: Windows Server 2012 R2 als HyperV VM 15 GB RAM ...

Batch & Shell

Batchscript führt im Task Planer die Aktionen nicht aus

gelöst Frage von Ch3p4cKBatch & Shell5 Kommentare

Hallo zusammen, nun setze ich mal meine Hoffnung in die Community. Ich habe gerade auf einem Windows Server 2008 ...

Windows Userverwaltung

Berechtigungen Windows Server 2016 - Batchscript editieren

gelöst Frage von KMUlifeWindows Userverwaltung11 Kommentare

Hallo zusammen! Meine Haare werden langsam grau aufgrund der Berechtigungslogik von Microsoft. Ich hoffe ein paar von euch können ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 11 StundenErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 13 StundenWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgborn vor 13 StundenMicrosoft8 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 2 TagenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Heiß diskutierte Inhalte
Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1026 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall15 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)15 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...

Webbrowser
Welcher Browser ist der Beste?
Frage von justtinWebbrowser13 Kommentare

Hallo Leute Ich habe eine interessante Frage. Mich wurde mal interessieren welcher Browser ist eure meinung nach der beste? ...