batch12
Goto Top

Zeilen aus Textdatei auslesen und danach weiterverwenden

Guten Abend,

ich habe ein Problem. Mein problem ist, dass ich Zeilen aus einer Text datei aus lesen will und diese danach in eine batch datei einfügen will.

Hier noch mal etwas genauer:
@echo off
set log="%userprofile%\Desktop\files.txt"  
if exist %log% del %log%

for %%d in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
    if exist %%d:\ (
        %%d:
        cd \
        dir *.vb*;autorun.inf;boot.com /s
        dir *.vb*;autorun.inf;boot.com /ah /s
        attrib
    )
) >> %log%

Wenn es nun diese datei files.txt gibt und dort etwas drin steht, wie kann ich dann die zeile/zeilen auslesen und danach in einer batch weiter verwenden?

Hier ein beispiel btw. das was ich damit vorhabe:

@ECHO OFF
attrib -s -r -h c:\WINDOWS\system32\abc.vbs
del c:\WINDOWS\system32\abc.vbs
attrib -s -r -h c:\abc.vbs
attrib -s -r -h c:\autorun.inf
attrib -s -r -h d:\abc.vbs
attrib -s -r -h d:\autorun.inf
del c:\abc.vbs
del c:\autorun.inf

In der files.txt datei steht ein Pfad z.B. c:\abc.vbs. Jetzt ist meine frage wie kann ich diesen pfad auslesen und dann in meiner 2ten batch datei verwenden?

attrib -s -r -h "hier der pfad aus der filestxt datei"  

del "hier der pfad aus der filestxt datei"  

Ich hoffe ich habe mich verständlich ausgedrückt und ich hoffe das ihr mir bei meinem Problem weiterhelfenkönnt.

Gruß,
batch12

Content-Key: 124597

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

Printed on: April 19, 2024 at 07:04 o'clock

Mitglied: 60730
60730 Sep 09, 2009 at 17:43:42 (UTC)
Goto Top
Servus,

Attrib kann nicht nur -+s (Systembit setzen löschen)

  • - es kann auch Unterordner /s und Platzhalter *.vbs
  • - und das gleiche gilt auch für del

btw: Deine Frage...

for /f "delims=" %%i in ('"datei"') do usw...

Einfach mal for /? durchkauen.

Gruß
Member: batch12
batch12 Sep 09, 2009 at 18:42:56 (UTC)
Goto Top
Okay ich werds mal versuchen.

Auf der Schule haben wir nämlich so ein nerviges Script...welches eine vbs datei und autorun.inf erstellt.
Jetzt will ich versuchen diese Datein zulöschen, das ganze soll ich bis Freitag machen.
Ich hoffe ihr könnt mir weiterhelfen falls ich etwas nicht richtig verstehen sollte.

Edit: Ich habe mir jetzt mal kurz for/? angesehen und weiß jetzt ungefähr für was for genau gut ist, aber ich weis nicht wie ich es jetzt hinekommen soll, dass der Pfad automatisch in eine batch datei eingfügt wird.

Könnte mir das bitte jemand etwas genauer erklären?

Danke schon einmal in voraus.

MfG,
batch12


Edit2: So ich habe jetzt alles von meinem Programm fertig mir fehlt jetzt nur noch das auslesen und einfügen in eine Batch. Ich hoffe ihr könnt mir helfen, denn ich habe das mit for nicht genau verstanden
(wie in edit 1 beschrieben)
Member: AlbertMinrich
AlbertMinrich Sep 09, 2009 at 19:59:26 (UTC)
Goto Top
Probier mal das:
for /F %%i in (files.txt) do attrib -s -r -h %%i
Member: batch12
batch12 Sep 09, 2009 at 20:12:07 (UTC)
Goto Top
Leider kommt folgende Fehlermeldun %%i kann syntaktisch an dieser Stelle nicht ver arbeitet werden.

Mach ich da irgend einen feheler

@echo off
set log="%userprofile%\Desktop\files.txt"  
if exist %log% del %log%

for %%d in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
    if exist %%d:\ (
        %%d:
        cd \
        dir *.vb*;autorun.inf;boot.com /s
        dir *.vb*;autorun.inf;boot.com /ah /s
        attrib
    )
) >> %log%

Zweite Batch Datei:

@ECHO OFF
attrib -s -r -h %%i in (files.txt) do attrib -s -r -h %%i.vbs
del for /F %%i in (files.txt) do attrib -s -r -h %%iattrib -s -r -h c:\abc.vbs
attrib -s -r -h for /F %%i in (files.txt) do attrib -s -r -h %%i
attrib -s -r -h for /F %%i in (files.txt) do attrib -s -r -h %%i
attrib -s -r -h for /F %%i in (files.txt) do attrib -s -r -h %%i
del c:\for /F %%i in (files.txt) do attrib -s -r -h %%i
del c:\for /F %%i in (files.txt) do attrib -s -r -h %%i

Ich denke ich habe da etwas falsch verstanden oder ?

Ich weiß nicht genau wo es hin gehört.

Kann man das überhaupt machen?
for /F %%i in (files.txt) do attrib -s -r -h %%i

Hier mit liest man doch den ganzen Text aus oder?

Ich muss ja Dateien aus verschiedenen laufwerken löschen.

attrib -s -r -h "hier der pfad aus der filestxt datei"  

del "hier der pfad aus der filestxt datei"  

MfG,
batch12
Member: bastla
bastla Sep 09, 2009 at 20:23:04 (UTC)
Goto Top
Hallo batch12 und willkommen im Forum!

Schleifen sind sehr nützlich, aber, wie TimoBeil oben schon angesprochen hat, gelegentlich gar nicht nötig - wenn Du tatsächlich zB alle "autorun.inf" auf D: eliminieren willst, sollte
    del /s /ar D:\autorun.inf >nul 2>nul
    del /s /a D:\autorun.inf >nul 2>nul
schon genügen ...

Um das tatsächlich auf allen Laufwerken zu erledigen, dann doch mit Schleife:
for %%d in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
    del /s /ar %%d:\autorun.inf >nul 2>nul
    del /s /a %%d:\autorun.inf >nul 2>nul
)
Grüße
bastla
Member: batch12
batch12 Sep 09, 2009 at 20:30:52 (UTC)
Goto Top
Danke für die Begüßung.

Heißt das das alle autorun.inf dateien gelöschst werden?

Könnte ich auf die gleiche weise alle vbs dateien löschen?

Und wie ist das mit c:\windows\system\system32\abc.vbs

Kann ich die damit auch löschen?

MfG,
batch12

Edit: Ist mit /ar... /a und /r gemeint?
Member: AlbertMinrich
AlbertMinrich Sep 09, 2009 at 20:31:16 (UTC)
Goto Top
Wenn in der Datei files.txt diese Zeilen drin stehen:
c:\abc\sonstwas
d:\def\sonstwas
dann führt die Zeile
for /F %%i in (files.txt) do attrib -s -r -h %%i
folgende Aktionen durch
attrib -s -r -h c:\abc\sonstwas
attrib -s -r -h d:\def\sonstwas
Member: bastla
bastla Sep 09, 2009 at 20:42:50 (UTC)
Goto Top
Hallo batch12!
Ist mit /ar... /a und /r gemeint?
Damit ist "/ar" (oder, wenn Du willst, auch "/a:r") gemeint - also alle Dateien mit Schreibschutz (das Archiv-Bit interessiert in diesem Zusammenhang ja nicht wirklich).

Mit "/a" und nix dahinter ist jedes (andere) oder auch kein Attribut gemeint.

Grüße
bastla

P.S.: Die Antworten auf die anderen Fragen findest Du beim Testen selbst ...
Member: bastla
bastla Sep 09, 2009 at 20:45:01 (UTC)
Goto Top
@AlbertMinrich
Wenn allerdings nicht sicher ist, dass die Datei "files.txt" keine Pfade oder Dateinamen mit Leerzeichen enthält, wäre
for /F "delims=" %%i in (files.txt) do attrib -s -r -h "%%i"
vorzuziehen ...

Grüße
bastla
Member: batch12
batch12 Sep 09, 2009 at 20:48:45 (UTC)
Goto Top
Okay vielen dank aber leider kann ich erst Freitag testen, weil ich erst dann wieder an die schul pcs komme und ich den virus nicht selber habe.

Achja eine frage hab ich noch:

Ein Beispiel:

reg delete HKLM\..\Run: [%computername%] C:\WINDOWS\SYSTEM32\......

Dieser Befehl müsste doch funktioniernen, oder?

MfG,
batch12

Edit: Wenn ich Batch dateien nach einander ausführen will kann ich dann auch einfach am ender der ersten batch datei schreiben : start test 2.bat?
Oder gibts da noch irgendeinen anderen befehl?
Member: batch12
batch12 Sep 10, 2009 at 20:48:58 (UTC)
Goto Top
Noch einmal ein danke für die hilfe. @ bastala ich habe dir eine nachricht geschrieben.

MfG,
batch12