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

Per Batch bestimmte Zeichenketten bzw. Stellen in Datei suchen und als Dateiname verwenden

Frage Entwicklung Batch & Shell

Mitglied: loony666

loony666 (Level 1) - Jetzt verbinden

06.02.2008, aktualisiert 08.02.2008, 8824 Aufrufe, 5 Kommentare

Anfänger benötigt Hilfe

Hallo,

ich habe etliche Einträge zu diesem Thema gefunden, bin aber überhaupt nicht schlau draus geworden.
Vielleicht könnt Ihr bei meinem Problem Hifestellung leisten:
Ich habe eine Datei, welche den Dateinamen 1.out hat.
Inhalt der Datei ist: an Irgendeiner Stelle kommt eine Zeichenkette "ADREVER(+18 Blanks)" vor. Der Inhalt nach dieser Zeichenkette soll in der Länge 55 ohne Blank als erster Teil des Namens verwendet werden.
Gefolgt von einem _ und dann der Zweite Teil mit Zeichenkette "BORK(+4 Blanks)" nach dieser Länge 28 ohne Blanks.

Inhalt Datei:
ADREVER(+18 Blanks)Hallo(+50Blanks)68529356423
BORK(+4 Blanks)01012008(+20Blanks)563467

Ergebnis: Dateiname lautet -> Hallo_01012008.out

Die Stelle ist nur durch die Zeichenkette zu finden.
Das ist bestimmt Möglich, weiß nur nicht wie.

Danke für die Hilfe.

Marko

EDIT: Da die Blanks nicht angezeigt worden hab ich die in Klammer dazugeschrieben...
Mitglied: lowbyte1
07.02.2008 um 02:13 Uhr
helo loony666


so wie ich das verstanden habe suchst du das ...

getestet mit txt file namens 1.out


01.
@echo off & setlocal 
02.
set "e=echo." 
03.
Findstr /R "ADREVER BORK" 1.out.txt >> test5.txt 
04.
For /F "tokens=2" %%i in (test5.txt) do call :ProcessLine "%%i" 
05.
%e% 
06.
%e%Ergebnis: Dateiname lautet - %var%_%var1%.out 
07.
ren 1.out.txt %var%_%var1%.out                                                                                                             
08.
%e% & %e% & %e% 
09.
pause 
10.
del test5.txt 
11.
endlocal & exit 
12.
 
13.
:ProcessLine 
14.
	 
15.
if not defined var ( 
16.
	     	Set "var=%~1" 
17.
	) else ( 
18.
	    	Set "var1=%~1" 
19.
20.
goto:eof 
21.
 


lowbyte
Bitte warten ..
Mitglied: loony666
07.02.2008 um 09:14 Uhr
Moin lowbyte,

perfekt! Vielen Dank für die Umsetzung!
Kann man das auch für alle Dateien *.out.txt durchführen?
Im Moment muss ja der Dateiname Fest vorgegeben werden.
Könntest du mir evtl. auch erklären warum das so funktioniert?

Danke

Marko
Bitte warten ..
Mitglied: loony666
07.02.2008 um 14:15 Uhr
Ich nochmal

Also die Schleife war einfach...

Klappt jetzt alles!

Eine kleine Erklärung zu dem Code währe trotzdem lieb.
Ich kann es noch nicht 100%tig verstehen

Marko
Bitte warten ..
Mitglied: lowbyte1
08.02.2008 um 00:08 Uhr
helo marko

wen du ein paar dateien umbenennen willst ...
dieser code_schnipsel funktioniert nur wen die dateien alle (inkrementierent) bennant sind zbsp: 1.out.txt 2.out.txt 3.out.txt usw.
und die findstr argumente wie ADREVER und BORK auch gleich bleiben.

01.
echo.wieviele dateien möchtest du umbenennen? 
02.
echo.input: 
03.
set /P input= 
04.
for /L %%a in (1,1,%input%) do Findstr /R "ADREVER BORK" %%a.out.txt >> test%%a.txt 
05.
dann weiter verarbeiten ...


code erklärung

01.
@echo off & setlocal                                                                          1.echo off  //  Startet die Begrenzung des Gültigkeitsbereiches von Änderungen. 
02.
                                                                                                              Änderungen der Umgebung nach SETLOCAL sind nur auf die Batchdatei bezogen. 
03.
set "e=echo."                                                                                 2.befehl echo. wird der variable e zugewisen. 
04.
Findstr /R "ADREVER BORK" 1.out.txt >> test5.txt 
05.
For /F "tokens=2" %%i in (test5.txt) do call :ProcessLine "%%i"                               3.liest das 2.te token aus der test5.txt, danach wird der codeblock :ProcessLine ge-callt (in abschnitt 4.) und im das argument %%i übergeben. 
06.
                                                                                                in diesem fall läuft bei dir die schleife genau 2 mal weil du 2 werte ausliest und danach var und var1 zuweist. 
07.
%e% 
08.
%e%Ergebnis: Dateiname lautet - %var%_%var1%.out                                              7.wen die 2 variablen ein wert haben setzten wir die strings zusammen und zeigen das ergebniss an. 
09.
ren 1.out.txt %var%_%var1%.out                                                                8.wir benennen die datei um. in %var%_%var1%.out 
10.
%e% & %e% & %e%                                                                               9.das sind nur echos (das wird dich verwirrt haben). 
11.
pause                                                                                        10.break 
12.
del test5.txt                                                                                11.lösche test5.txt 
13.
endlocal & exit                                                                              12.beendet die begrenzung des gültigkeitsbereiches von änderungen.  und batch schlissen. 
14.
                                                                                      
15.
 
16.
:ProcessLine                                           4. codeblock :ProcessLine . 
17.
	 
18.
if not defined var (                                   5. falls nicht definiert variable  "var"        
19.
	     	Set "var=%~1"                             argument %%i variable "var" zuweisen. 
20.
	) else (                                          sonst .... 
21.
	    	Set "var1=%~1"                            argument %%i variable "var1" zuweisen. 
22.
23.
goto:eof                                               6. in diesem fall end of codeblock. danach sprung zurück nach abschnitt 3. 
24.
 

lowbyte
Bitte warten ..
Mitglied: loony666
08.02.2008 um 08:27 Uhr
Moin lowbyte,

vielen Dank auch für die Erklärung. Jetzt verstehe ich auch was ich da eingegeben habe

Marko
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(7)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Wert in einer TXT Datei suchen (11)

Frage von nolle99 zum Thema Batch & Shell ...

Windows Systemdateien
gelöst Registry-Schlüssel per Batch auslesen und in Datei schreiben (9)

Frage von Philzip zum Thema Windows Systemdateien ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (17)

Frage von Unwichtig zum Thema Netzwerkmanagement ...