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

Systemdatei mit Batch bearbeiten, danach wieder zu einer Systemdatei machen

Frage Entwicklung Batch & Shell

Mitglied: TheDarkLord

TheDarkLord (Level 1) - Jetzt verbinden

25.01.2010, aktualisiert 11:13 Uhr, 4953 Aufrufe, 9 Kommentare

Hallo

Ich lasse in einer Systemdatei in Windows XP ein Wort suchen und durch ein anderes ersetzen.
Das funktioniert auch gut, allerdings ist das Attribut nach der Bearbeitung nicht mehr HSA wie vorher sondern nur noch A.
Gibt es eine Möglichkeit, nach dem Ersetzen die Datei wieder zu einer Systemdatei zu machen?

Hier die Batch:
01.
@echo off & setlocal 
02.
set "Datei=c:\systemdatei.ini"  
03.
set "Von=ALTESWORT" 
04.
set "Nach=NEUESWORT" 
05.
 
06.
set "t=%temp%\text.tmp"  
07.
if exist "%t%" del "%t%"  
08.
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & call :ProcessLine 
09.
move "%t%" "%Datei%" 
10.
goto :eof 
11.
 
12.
:ProcessLine 
13.
call set "Line=%%Line:%Von%=%Nach%%%" 
14.
 
15.
>>"%t%" echo %Line% 
16.
goto :eof
Kann ich irgendwie mit der Batch die Attribute wieder setzen? Ich habe aber auch mittels Rechtsklick auf die Datei nichts gefunden, um sie wieder als Systemdatei zu deklarieren. Habe auch noch nicht ausprobiert, ob das System danach meckert, wenn ich die Datei mittels Batch und nicht z.B. über msconfig.exe bearbeite...
Hat jemand damit Erfahrung und weiss, dass das Attribut egal ist beim Systemstart?

Gruß Dark
Mitglied: Tommy70
25.01.2010 um 10:35 Uhr
Hallo,

versuchs mal mit attrib
Bitte warten ..
Mitglied: TheDarkLord
25.01.2010 um 10:46 Uhr
Hallo

Japp, vielen Dank! Das hab ich jetzt auch gerade gemacht.
Ich hatte das attrib +s +h nur an der falschen Stelle in der Batch, deshalb hat es nicht geklappt!

So funktioniert es mit der Batch und die Datei hat danach auch wieder HSA als Attribut:
01.
@echo off & setlocal 
02.
set "Datei=c:\systemdatei.ini"  
03.
set "Von=ALTESWORT" 
04.
set "Nach=NEUESWORT" 
05.
 
06.
set "t=%temp%\text.tmp"  
07.
if exist "%t%" del "%t%"  
08.
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & call :ProcessLine 
09.
move "%t%" "%Datei%" 
10.
attrib +s +h %Datei% 
11.
goto :eof 
12.
 
13.
:ProcessLine 
14.
call set "Line=%%Line:%Von%=%Nach%%%" 
15.
 
16.
>>"%t%" echo %Line% 
17.
goto :eof
Vielen Dank für die schnelle Antwort, Tommy!

Gruß Dark
Bitte warten ..
Mitglied: Biber
25.01.2010 um 10:59 Uhr
Moin TheDarkLord,

zu der Teilfrage
Hat jemand damit Erfahrung und weiss, dass das Attribut egal ist beim Systemstart?
Ja, nein, eher umgekehrt.

Einige (meiner Wahrnehmung nach der überwiegende Teil der) Systemdateien/Systemordner MÜSSEN neben einem feststehenden Namen zusätzlich auch die Attribute System/Hidden gesetzt haben, seltener wird auf gesetztes Readonly-Attribut geprüft.

Unabhängig davon gilt aber in WGs wie auch beim Bätchen: "Verlasse den Raum so, wie du ihn vorzufinden wünscht, mindestens aber so, wie du ihn vorgefunden hast".
Wenn du also vorher weißt, dass du eine RSH-Datei (bzw. eine Datei mit sehr speziellen Attributen) anfasst, dann sollte es selbstverständlich sein, diesen Zustand zu restaurieren.....

Grüße
Biber
Bitte warten ..
Mitglied: TheDarkLord
25.01.2010 um 11:12 Uhr
Hallo Biber,

japp das hab ich mir schon gedacht, deshalb wollte ich es garnicht erst auf einen Versuch ankommen lassen sondern gleich die Datei wieder mit den vorherigen Attributen versehen

Danke nochmal für die Erklärung!

Gruß Dark
Bitte warten ..
Mitglied: pieh-ejdsch
25.01.2010 um 20:07 Uhr
Hi DarkLord,

wenn schon Systemdateien dann würde ich aber auch nichts den Zufall überlassen.

01.
@echo on & setlocal 
02.
set "Datei=c:\hiberfil.sys" 
03.
set "Von=ALTESWORT" 
04.
set "Nach=NEUESWORT" 
05.
 
06.
set "t=%temp%\text.tmp" 
07.
if exist "%t%" del "%t%" 
08.
set "Oldset=" 
09.
for /f "delims=:" %%i in ('attrib "%Datei%"') do set "Attrib=%%~i" 
10.
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & call :ProcessLine 
11.
move "%t%" "%Datei%" 
12.
for %%i in (%Attrib:~0,1% %Attrib:~3,1% %Attrib:~4,1% %Attrib:~5,1%) do call :Oldset %%i 
13.
 
14.
attrib%Oldset% "%Datei%" 
15.
goto :eof 
16.
 
17.
:ProcessLine 
18.
call set "Line=%%Line:%Von%=%Nach%%%" 
19.
 
20.
>>"%t%" echo.%Line% 
21.
goto :eof 
22.
 
23.
:Oldset 
24.
set "Oldset=%Oldset% +%1" 
25.
goto :eof
Das i Attribut für nicht indiziert ist ja bei XP glaub ich gar net vorhanden.

Gruß Phil
Bitte warten ..
Mitglied: Biber
25.01.2010 um 20:44 Uhr
Moin pieh-ejdsch,

als (geplant) letzte Spitzfindigkeit zu diesem Thema...
zumindest optisch eleganter und vermutlich etwas flotter als deine Zeile 09
for /f "delims=:" %%i in ('attrib "%Datei%"') do set "Attrib=%%~i"

...fände ich den Weg über die von %~ai (der Attribut-Variante) der abgeleiteten Laufvariablen:

Beispiel am CMD-Prompt:

01.
>attrib datei.bla +h +s +r 
02.
 
03.
 
04.
(=20:36:13  D:\temp=) 
05.
>for %i in (datei.bla) do @echo %~ai 
06.
-rahs---- 
07.
 
08.
(=20:36:34  D:\temp=) 
09.
>attrib datei.bla 
10.
A  SHR     D:\temp\datei.bla
Zu beachten ist nur für die anschließende Substring-Arie, dass die Reihenfolge der Atrribute -wie von RedmonderInnen zu erwarten war-- bei der Anzeige von ATTRIB eine vollkommen andere als bei %~ai ist ...

Grüße
Biber
Bitte warten ..
Mitglied: TheDarkLord
25.01.2010 um 21:09 Uhr
Vielen Dank für die Hile ihr zwei

Gruß Dark

Nachtrag:
Wenn wir schon mal dabei sind, das gelöste Thema zu behandeln, noch eine "Schönheitsfrage"
Wie kann ich denn sozusagen überprüfen, ob NEUESWORT schon in der Datei vorhanden ist?
Genaueres Beispiel:
altes Wort: "Param 1"
neues Wort: "Param 1, Param 2, Param 3"
Ist das einfach zu machen, dass ich überprüfen kann, ob "Param 2, Param 3" schon in der Datei steht?
Weil ich hab mir überlegt, wenn ich die Batch ein zweites mal ausführe (oder jemand anderes, der nicht so versiert ist), dann wird ja beim ersten mal "Param 1" in "Param1, Param 2, Param3" geändert. Beim zweiten mal kommt dann aber "Param 1, Param 2, Param 3, Param 2, Param 3" heraus - könnt ihr mir folgen?
Vielleicht stehe ich auf dem Schlauch, aber ich komme einfach nicht darauf, wie ich das lösen kann...

Gruß Dark
Bitte warten ..
Mitglied: pieh-ejdsch
25.01.2010 um 23:53 Uhr
Hi DarkLord,

findstr löst dieses Problem zu beginn der Batch Zeile 06

@Biber ja das mit dem Attribut aus der FOR vari direkt zu holen ist mir gar net bewusst gewesen.
am besten ich mach noch mal nen CrashKurs über die Variablen damit da mehr hängenbleibt.

01.
@echo on & setlocal 
02.
set "Datei=c:\hiberfil.sys" 
03.
set "Von=ALTESWORT" 
04.
set "Nach=NEUESWORT" 
05.
 
06.
findstr /c "%nach%" "%Datei%" 2>nul && goto :eof 
07.
 
08.
set "t=%temp%\text.tmp" 
09.
if exist "%t%" del "%t%" 
10.
set "Oldset=" 
11.
for %%i in ("%Datei%") do set "Attrib=%%~ai" 
12.
 
13.
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & call :ProcessLine 
14.
move "%t%" "%Datei%" 
15.
for %%i in (%Attrib:~1,1% %Attrib:~2,1% %Attrib:~3,1% %Attrib:~4,1%) do if not "%%i"=="-" call :Oldset %%i 
16.
 
17.
attrib%Oldset% "%Datei%" 
18.
goto :eof 
19.
 
20.
:ProcessLine 
21.
call set "Line=%%Line:%Von%=%Nach%%%" 
22.
 
23.
>>"%t%" echo %Line% 
24.
goto :eof 
25.
 
26.
:Oldset 
27.
set "Oldset=%Oldset% +%1" 
28.
goto :eof
Gruß Phil
Bitte warten ..
Mitglied: TheDarkLord
26.01.2010 um 10:41 Uhr
Hey Phil, 100%ig, vielen Dank!

Hast nur einen kleinen Fehler in Zeile 6. findstr /c:SUCHSTRING ist die Syntax.
Das muss also heißen:
findstr /c:"%Nach%" "%Datei%" 2>nul && goto :eof

Hier nochmal das komplette Script für jemanden, der das vielleicht auch braucht.
In diesem Fall hier wird die boot.ini modifiziert, um eine "640x480 16Farben BMP", mit dem Namen "boot.bmp" in C:\Windows liegend, beim hochfahren Anstatt des WinXP Bootscreens anzuzeigen. Natürlich muss die bmp noch kopiert werden xD
01.
@echo on & setlocal 
02.
set "DATEI=c:\boot.ini" 
03.
set "VON=/fastdetect" 
04.
set "NACH=/fastdetect /bootlogo /noguiboot" 
05.
 
06.
findstr /c:"%NACH%" "%DATEI%" 2>nul && goto :eof 
07.
 
08.
set "t=%temp%\text.tmp" 
09.
if exist "%t%" del "%t%" 
10.
set "Oldset=" 
11.
for %%i in ("%DATEI%") do set "Attrib=%%~ai" 
12.
 
13.
for /f "usebackq delims=" %%i in ("%DATEI%") do set "Line=%%i" & call :ProcessLine 
14.
move "%t%" "%DATEI%" 
15.
for %%i in (%Attrib:~1,1% %Attrib:~2,1% %Attrib:~3,1% %Attrib:~4,1%) do if not "%%i"=="-" call :Oldset %%i 
16.
 
17.
attrib%Oldset% "%DATEI%" 
18.
goto :eof 
19.
 
20.
:ProcessLine 
21.
call set "Line=%%Line:%VON%=%NACH%%%" 
22.
 
23.
>>"%t%" echo %Line% 
24.
goto :eof 
25.
 
26.
:Oldset 
27.
set "Oldset=%Oldset% +%1" 
28.
goto :eof
Gruß Dark
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch zum bearbeiten mehrerer CSV
Frage von Matzus87Batch & Shell3 Kommentare

Hallo Zusammen, ich bin neu hier und arbeite mich gerade in die Batch Programmierung ein. Ich sitze momentan an ...

Batch & Shell
Batch zum automatischen Bearbeiten eines Wertes
gelöst Frage von M-K-D-BBatch & Shell20 Kommentare

Hallo, ich versuche mich gerade daran, einen Wert in der Registry per Batch zu bearbeiten, komme aber nicht so ...

Batch & Shell
Batch : alle Dateien eines Ordners bearbeiten
gelöst Frage von deguonkelBatch & Shell1 Kommentar

Hallo, ich habe folgendes Problem, ich habe ein fertiges Batch-Programm, bei dem man einen Dateipfad angibt, und diese Datei ...

Sicherheit
Application Whitelisting - Umgang mit Systemdateien
Tipp von DerWoWussteSicherheit2 Kommentare

Es begab sich Ende letzter Woche, dass einem Sicherheitsspezi auffiel, dass eine Windowssystemkomponente (c:\windows\system32\regsvr32.exe) ihm bislang unbekannte Fähigkeiten hat: ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 6 StundenBatch & Shell7 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 8 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Batch & Shell
Neuste Datei via PowerShell kopieren
gelöst Frage von kaiuwe28Batch & Shell11 Kommentare

Hallo zusammen, ich hatte mir mit Hilfe der Suche im Forum einen kleinen Code von colinardo rausgesucht und versucht ...