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

In mehrere Textfiles per Batch Wert einfügen ?

Frage Entwicklung Batch & Shell

Mitglied: ibase007

ibase007 (Level 1) - Jetzt verbinden

02.04.2010 um 18:07 Uhr, 7427 Aufrufe, 13 Kommentare

absoluter beginner ...

Hallo zusammen,


ich möchte in der ersten Zeile einer Textdatei etwas einfügen :
Bsp.: <HALLO HALLO bitte beachten>

nun ist es so das es knapp 600 Dateien sind.
aber Händisch doch auch zimlich aufwändig ist

ich habe hier im Forum schon sehr viel gesucht und auch etwas gefunden :
http://www.administrator.de/index.php?content=96143
das ist eigentlich meine Lösung

01.
@echo off & setlocal  
02.
for %%i in ("%~dp0*.txt") do (  
03.
	echo\  
04.
	echo M99  
05.
)>>"%%~i"
ABER, wie kann ich es machen, dass mein Wert am Anfang von Textdokument eingefügt wird ?
UND, ist es auch möglich gegen zu prüfen ob der wert schon vorhanden ist ?

viele Grüße und vielen Dank
Ibase
Mitglied: AndreasBrecht
02.04.2010 um 18:57 Uhr
Falls vbscript für Dich in Frage kommt:
Datei als Textstream öffnen, mit ReadAll einlesen, den Text an den Anfang des Gelesenen hängen und alles mit write zurückschreiben.
Bitte warten ..
Mitglied: bastla
02.04.2010 um 19:12 Uhr
Hallo ibase007 und willkommen im Forum!

Mit Batch alleine wäre das etwas mühsam - mit ein wenig integriertem VBS geht's besser:
01.
@echo off & setlocal 
02.
set "Ordner=D:\Dein Testordner" 
03.
set "Typ=txt" 
04.
set "Text=<HALLO HALLO bitte beachten>" 
05.
 
06.
set A=%temp%\AddText.vbs 
07.
> %A% echo Set fso=CreateObject("Scripting.FileSystemObject"):Set A=WScript.Arguments:D=A(0):T=A(1) 
08.
>>%A% echo I=Split(fso.OpenTextFile(D).ReadAll,vbCrLF):If InStr(I(0),T)=0 Then fso.CreateTextFile(D).Write T^&Join(I,vbCrLf) 
09.
pushd "%Ordner%" 
10.
for /f "delims=" %%i in ('dir /b *.%Typ%') do cscript //nologo %A% "%%i" "%Text%" 
11.
popd
Bitte zuerst nur einige Testdateien verwenden, da (ohne Ersetllung einer Sicherungskopie) die Dateien unmittelbar verändert werden.

Grüße
bastla

[Edit] | @AndreasBrecht: Da wären wir uns ja weitgehend einig ... [/Edi]
Bitte warten ..
Mitglied: ibase007
02.04.2010 um 19:48 Uhr
hallo Ihr Zwei,

also ich bin gerade sehr sprachlos, wie selbstvertsändlich das für euch beide ist ... wenn ich das auch selbst nur so könnte ...
und vor allem so schnell !
Habe es gerade getestet es funktioniert ! HAMMER ! bin echt sprachlos und begeistert.

nur eine Frage habe ich gerade noch, wie sieht dann die Formatierung aus
wenn nun der Inhalt ungefähr so ausschaut :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

dann macht das Script daraus :
<meta http-equiv=Content-Type content=text/html;


VIELEN DANK NOCH MAL FÜR DIE SO SCHNELLE & KOMPETENTE HILFE bastla !!!
Bitte warten ..
Mitglied: bastla
02.04.2010 um 19:57 Uhr
Hallo ibase007!

Die enthaltenen Anführungszeichen machen es für die "Batch-Hülle" noch etwas schwieriger - mit einer etwas unmittelbareren Schreibweise sollte sich das aber auch lösen lassen:
Ersetze dazu die Zeile 7 durch
> %A% echo Set fso=CreateObject("Scripting.FileSystemObject"):Set A=WScript.Arguments:D=A(0):T="<meta http-equiv=""Content-Type"" content=""text/html; charset=utf-8""/>"
Die Zeile 4 wird danach nicht mehr benötigt, und in der Zeile 10 entfällt dann das "%Text%" am Ende.

Als Hinweis für ev Änderungen des einzufügenden Textes (in der neuen Zeile 7): Wenn ein Anführungszeichen als Text behandelt werden soll, muss es verdoppelt werden ...

Grüße
bastla
Bitte warten ..
Mitglied: ibase007
02.04.2010 um 20:03 Uhr
ich bin Sprachlos !
Wirklich alle Achtung vor Deinem können !!!
VIELEN DANK !
Bitte warten ..
Mitglied: 76109
02.04.2010 um 20:36 Uhr
Hallo ibase007, Hallo bastla!

Alternativ, hätte man bei Html-Code auch die Scheibform mit einfachen Hochkommas verwenden können, z.B.:
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>

Gruß Dieter
Bitte warten ..
Mitglied: ibase007
02.04.2010 um 20:44 Uhr
ok, da war ich mir nicht sicher ob man das gleichstellen kann.
das hatte ich auch schon getestet.
aber ist schon klasse was man sich da arbeit sparen kann

jetzt bin ich schon fast fertig muss dann nur noch mit "Suchen und ersetzen" ein Zeilenumbruch einbauen.

Wo kann man sich da eigentlich in die VB Scripts etwas einlesen ?
Bitte warten ..
Mitglied: bastla
02.04.2010 um 20:51 Uhr
Hallo ibase007!
muss dann nur noch mit "Suchen und ersetzen" ein Zeilenumbruch einbauen.
Wenn Du nicht oben geschrieben hättest "in der ersten Zeile einer Textdatei etwas einfügen" wäre es auch ohne VBScript relativ einfach gegangen ...

Damit der eingefügte Text die erste Zeile für sich alleine hat, müsstest Du nur als Ersatz der ursprünglichen Zeile 8
>>%A% echo I=Split(fso.OpenTextFile(D).ReadAll,vbCrLF):If InStr(I(0),T)=0 Then fso.CreateTextFile(D).Write T^&vbCrLf^&Join(I,vbCrLf)
verwenden.

Grüße
bastla
Bitte warten ..
Mitglied: lefgruen
02.04.2010 um 20:59 Uhr
Hallo,

der Kommandointerpreter kann afik keine Streams, man kann sich aber mit einigen Tricks behelfen. Einen bietet der Copybefehl, der kann Textdateien aneinander hängen.

echo Zeile 1 in Datei 1 > c:\Datei1.txt
echo Zeile 1 in Datei 2 > c:\Datei2.txt

copy c:\Datei1.txt + c:\Datei2.txt c:\Datei3.txt
pause

Falls man einer existierenden datei2.txt eine Zeile voranstellen möchte, dann erzeuge man eine Datei1.txt mit dem gewünschten Inhalt und kopiere die beiden Dateien zu einer Datei3.txt.
Bitte warten ..
Mitglied: ibase007
02.04.2010 um 21:05 Uhr
toll! Danke!

ich habe wirklich viel gesucht ! aber lange das nicht erreicht was ich hier in den Beiträgen lese!


Ok eine Sache habe ich noch

warum wird dann das Originalformat also die Formatierung des Textes nicht erhalten ?

zum Beispiel sind Wörter mit Apostroph enthalten

So wird dann aus :
través de la idílica

das hier :
trav�s de la id�lica
(Also so ein komisches 4 Eck)
Bitte warten ..
Mitglied: ibase007
02.04.2010 um 21:10 Uhr
Ok eine Sache habe ich noch

warum wird dann das Originalformat also die Formatierung des Textes nicht erhalten ?

zum Beispiel sind Wörter mit Apostroph enthalten

So wird dann aus :
través de la idílica

das hier :
trav�s de la id�lica
(Also so ein komisches 4 Eck)
Bitte warten ..
Mitglied: bastla
02.04.2010 um 21:42 Uhr
Hallo ibase007 und lefgruen!
Falls man einer existierenden datei2.txt eine Zeile voranstellen möchte, dann erzeuge man eine Datei1.txt mit dem gewünschten Inhalt und kopiere die beiden Dateien zu einer Datei3.txt.
Das (oder ein simples "type ... >>") wäre auch mein Ansatz gewesen ...
warum wird dann das Originalformat also die Formatierung des Textes nicht erhalten ?
Könnte daran liegen, dass die Dateien Unicode-Format haben - dann würde sich die Zeile 8 nochmals auf
>>%A% echo I=Split(fso.OpenTextFile(D,1,False,True).ReadAll,vbCrLF):If InStr(I(0),T)=0 Then fso.CreateTextFile(D,True,True).Write T^&vbCrLf^&Join(I,vbCrLf)
ändern (wobei ich allerdings unter XP SP3 das Problem nicht nachvollziehen konnte).

Grüße
bastla
Bitte warten ..
Mitglied: ibase007
02.04.2010 um 22:08 Uhr
ok jetzt wurde das daraus :D
auch nicht übel :D

㰀戀爀 ⼀㸀☀渀戀猀瀀㬀☀渀戀猀瀀㬀☀渀戀猀瀀㬀☀渀戀猀瀀㬀☀渀戀猀瀀㬀ഀഀ
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Mit Batch zwei Textfiles in einem zusammenfügen
gelöst Frage von BustedDiceBatch & Shell9 Kommentare

Hallo zusammen brauch eure Hilfe bei einem Batch. Habe zwei .txt Dateien die ich in eine .txt zusammen fügen ...

Batch & Shell
Den größten mehrerer Werte herausfinden - Batch
gelöst Frage von fame.stylerBatch & Shell5 Kommentare

Hi Leute ;) nach ewigen Zeiten habe ich mal wieder eine Frage an meine Meister des Batch =) Gibt ...

Microsoft Office
Werte in Matrix einfügen- Schleife
gelöst Frage von IkanerMicrosoft Office6 Kommentare

Hallo Leute, wie kann ich das bestehende Makro ergänzen, sodass es mir für jedes entstandene Arbeitsblatt (trägt den Namen ...

Microsoft Office
Wenn Wert doppelt, dann Zeile darunter einfügen
gelöst Frage von PhilosophMicrosoft Office12 Kommentare

Hallo alle zusammen! Ich habe eine Exceldatei mit 5 Spalten. In Spalte A befinden sich Kundennummern, in Spalte B ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 15 StundenWindows 102 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 16 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte16 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...

Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.