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

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, 7315 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 ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
gelöst Mehrere PDF-Dateien per Batch zusammenfügen (1)

Frage von Grimmli zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch: Variable einen Wert zuweisen (7)

Frage von sascha382 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (29)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...