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

einer batch-datei parameter aus einer textdatei übergeben

Frage Microsoft

Mitglied: ruebensau

ruebensau (Level 1) - Jetzt verbinden

27.10.2005, aktualisiert 30.11.2005, 9696 Aufrufe, 20 Kommentare

Hallo Admins/Mitglieder,

folgende Ausgangssituation

Ich habe eine Textdatei mit 20945 Zeilen
Jede Zeile ist als ein Datensatz zu interpretieren
Die Spalten sind durch Tabs getrennt

Ich möchte eine batch schreiben, die jeweils 3 Spalteneinträge aus jeder zeile der textdatei nimmt und hintereinader schreibt in eine neue textdatei. Und das eben 20945 mal.

Auszug der Textdatei:
1 19/ 8124 fuellstoff W CAD A
2 19/ 8115 HAB W CAD U
3 19/ 8125 fuellstoff W CAD A
4 19/ 7895 BIO I CAD A
5 19/ 8116 HAB W CAD A
6 19/ 8111 fuellstoff W CAD A
7 19/ 8110 fuellstoff W CAD A
8 19/ 8137 KC W CAD A
9 S 424 MMA S CAD U
10 S 449 KC F CAD A
11 19/ 8528 BMA L CAD A
12 19/ 8036 AUSSENAN B CAD A
...

Als Ergebnis soll diese Textdatei(Logdatei.txt) entsehen, die eigentlich batchbefehle enthält:

if exist y:\fuellstoff\a8124.* echo y:\fuellstoff\a8124.* > logdatei.txt
if exist y:\hab\a8116.* echo y:\hab\a8116.* > logdatei.txt
if exist y:\fuellstoff\a8111.* echo y:\fuellstoff\a8111.* > logdatei.txt
if exist y:\fuellstoff\a8124.* echo y:\fuellstoff\a8124.* > logdatei.txt
if exist y:\kc\a8137.* echo y:\kc\a8137.* > logdatei.txt
if exist y:\mma\u424.* echo y:\mma\u424.* > logdatei.txt
.....

Man sieht, für mich sind nur spalte 3,4,7 wichtig, die ich auslesen möchte.
Da ich nicht richtig vertraut bin mit der nutzung von stapelverabtungsbefehlen bräuchte ich einen Ansatz.

Fazit:
Es soll zum Schluß eine Textdatei entstehen, die 20945 mal den Befehl in Form von:
if exist y:\........ echo y:\......... > logdatei.txt
beinhaltet und pro zeile ein befehl.

Danke
Mitglied: onkelbentz
27.10.2005 um 14:09 Uhr
Hi!

Dein Anliegen ist gar nicht soooo schwer......Das hab ich erst gestern noch gebraucht.

Du nimmst einfach eine FOR-Schleife:




for /F " tokens=3,4,7 " %%A IN (deinedatei.txt) DO (

if exist %%A(Parameter1) echo %%B(Parameter2) echo %%C(Parameter3) > logdatei.txt

)





Du kannst die einzelnen Token über %%A %%B und %%C (IN EINER BATCH) ansprechen und benutzen sowie du willst......Kannst auch andere Trenner definieren, wenn du hinter tokens=XXX noch ein delims=TRENNER schreibst.

Guck mal unter der Commandshell mit for /?

Soweit von mir. Greetz der onkel
Bitte warten ..
Mitglied: ruebensau
27.10.2005 um 14:22 Uhr
klingt gut, das werde ich heute abend mal ausprobieren.
thx
Bitte warten ..
Mitglied: Biber
27.10.2005 um 16:44 Uhr
Moin rübensau,

01.
::--------snipp Writebat.bat 
02.
@Echo off & setlocal 
03.
:: Delims ist ein Tab...kann auch weggelassen werden, da Default 
04.
::### uncomment if needed:### If exist batdatei.bat del batdatei.bat 
05.
for /f "tokens=3,4,7 delims= " %%a in (liste.txt) do ( 
06.
 echo if exist y:\%%a\%%c\%%b.* echo y:\%%a\%%c\%%b.* ^>^>Logdatei.txt>>batdatei.bat 
07.
08.
::-------snapp  Writebat.bat

HTH
Frank / der Biber aus Bremen
P.S. Was ist denn das für ein Nick? Bist Du Niedersachse??
Bitte warten ..
Mitglied: ruebensau
28.10.2005 um 14:10 Uhr
Nein, ich komme aus Nordrheinwestfalen
Ich spiele ein Onlinegame und da habe ich mir den Namen einfach so ausgesucht.
Unter google gab es damals auch kein Ergebnis bei der Eingabe von Rübensau.
Aber heute wimmelt es nur so von diesem Nickname^^

Aber zurück zum Thema:
Soweit hat alles funktioniert und meine batchdatei sieht nun folgendermaßen aus:
if exist y:\fuellstoff\*8124.* echo y:\fuellstoff\*8124.* >>Logdatei_exist.txt
if exist y:\HAB\*8115.* echo y:\HAB\*8115.* >>Logdatei_exist.txt
if exist y:\fuellstoff\*8125.* echo y:\fuellstoff\*8125.* >>Logdatei_exist.txt
if exist y:\BIO\*7895.* echo y:\BIO\*7895.* >>Logdatei_exist.txt
if exist y:\HAB\*8116.* echo y:\HAB\*8116.* >>Logdatei_exist.txt
if exist y:\fuellstoff\*8111.* echo y:\fuellstoff\*8111.* >>Logdatei_exist.txt
if exist y:\fuellstoff\*8110.* echo y:\fuellstoff\*8110.* >>Logdatei_exist.txt
if exist y:\KC\*8137.* echo y:\KC\*8137.* >>Logdatei_exist.txt
if exist y:\MMA\*424.* echo y:\MMA\*424.* >>Logdatei_exist.txt
.......

Wie mache ich es nun, dass er die Datei nicht nur unter y:\fuellstoff\ auf Existenz überprüft (siehe Zeile 1), sondern auch in allen anderen Unterverzeichnissen von fuellstoff?

mit /s geht das nicht und ist wahrscheinlich für den if exist befehl nicht vorgesehen.
Hat da jemand eine Idee wie man das in die Abfragen einbauen kann?
Bitte warten ..
Mitglied: Biber
28.10.2005 um 15:14 Uhr
@rübensau
dann google doch mal nach Rübensau-NRW..vielleicht ist der ja noch frei...

Back To Thread..
Ideen hätte ich schon noch ein oder zwei... aber ich würde gern vorher die Mimik / die Anforderung dahinter verstehen.
Ich sehe im Moment gar keinen Sinn in dieser 3-Dateien-Lösung.
Welchen sittlichen Nährwert hat denn das Erzeugen dieser Zwischen-Bat (die bei mir BatDatei.bat heißt)? Die ist doch überflüssig - oder hast Du von dem Rechner, wo Du die LogDatei.txt später brauchst, keinen Zugriff auf die Anfangsliste (diese TABbed-Datendatei)?

Erzähl doch bitte mal zwei Sätze zum Hintergrund. Nach dem, was ich bisher sehe, ist dieser Zwischenschritt nicht nötig. Und wem dient denn wiederum die LogDatei.txt als Input? Einem Kopier-/Backup-/Druckprogramm? Oder einem vierten Batch?

Neugierig
Frank / der Biber aus Bremen
Bitte warten ..
Mitglied: ruebensau
29.10.2005 um 21:48 Uhr
also, ich mache gerade ein praktikum bei einem chemieriesen degussa ag
in einem betrieb werden cad zeichnungen für die anlagen erstellt und über ein programm
"zvs" abgelegt in einer filestruktur:
z.B
c:\bma\...\...\
c:\bma\
c:\fuellstoff\...\...\
c:\ep\...\....
c:\ep1

usw.

in diesem zvs stehen metadaten über den ablageort dieser vielen tiff und cad dateien.
Diese ganzen metadaten über die Dateien liegen mir als reportdatei (reportdatei.log)
pro zeile in dieser reportdateilog stehen mehrere metadaten über eine datei
in der form:
"herr kölner";"bma";"A";"04567";............................
"herr mueller";"fuellstoff";"A";"34567";...................
das sind ca 21000 zeilen

also, jede zeile sind metadaten für eine einzige datei, die abgelegt ist.
Meine Aufgabe ist es nun zu schauen, ob z.B. die Datei 04567 auch wirklich vorhanden ist und ob sie auch irgendwo in der verzeichnisstruktur c:\bma und unterverzeichnisse vorliegt.

Das alles ist so eine Art Validitätsprüfung, da in naher Zukunft eine automatische Datenaufnahme in ein DMS vorsteht. Daher sollen die Leichen schon von anfang an eliminiert werden, und andere dateien die laut metadaten z.B eigentlich in der VERZEICHNISSTRUKTUR BMA sein sollen aber in wirklichkeit doch wo anders sind ausgelesen werden.

Um eine Datei mit hilfe der metadaten ausfindig zu machen, brauche ich nur die spalte betrieb (bma,fuellstoff,ep1,....) und die spalte mit der eindeutigen nummer (04567,34567)

Ich hoffe du hast meine erläuterung verstanden.
Bitte warten ..
Mitglied: Biber
30.10.2005 um 00:46 Uhr
Moin rübensau,
habe heute erst ziemlich spät noch mal reingeschaut ins Forum und Deine Antwort gelesen..

Werde wohl auch mich heute mehr Becks als Batchen widmen. *gg

Aber nochmal die Frage:
Findet das denn alles (der erste Batch zum reportdatei.log-Durchsuchen) und das Erzeugen der "tatsächlich_vorhandenen.log" auf EINEM Rechner oder auf verschiedenen, nicht verbundenen Rechnern statt?
Oder passiert das zeitlich versetzt, eine Woche später oder so?
Ich würde das ja sonst mit einem Batch und einer inneren FOR /R..IN..DO..-Schleife erledigen wollen.

::--------snipp Seek4Existing.bat ---ungetestete Skizze
@Echo off & setlocal
:: Delims ist ein Tab...kann auch weggelassen werden, da Default
::### uncomment if needed:### If exist FoundLogDatei.log del FoundLogDatei.log
for /f "tokens=3,4,7 delims= " %%a in (liste.txt) do (
For /R y:\%%a\%%c\ %%@ in (%%b.*) do (
if exist %%@ echo %%~dpnx@>>FoundLogdatei.log
)
)
::-------snipp Seek4Existing.bat ---ungetestete Skizze
(die Zählvariable %%@ heißt nur so, damit ich die in dem drive-path-name-ext-Geraffel %%~dpnx@ wiederfinde. Undocumented, but beaverproofed.)

So, wie das Schreiben im Moment abläuft, würde der batch natürlich eine Datei
8110.xyz auch mehrmals in die FoundLogDatei.Log schreiben, wenn sie im Unterverzeichnis "y:\fuellstoff" und im Unterverzeichnis "y:\fuellstoff\VarianteB" gefunden wird. Ob das fachlich richtig ist/Sinn macht, kann ich nicht beurteilen.

HTH Biber
Bitte warten ..
Mitglied: ruebensau
01.11.2005 um 12:04 Uhr
Danke für die Antwort,
in ertser Linie soll die Datei auch nur gefunden werden.

das alles passiert auf einem rechner statt, der über das Netzwerk mit dem Ablageort verbunden ist.
Bitte warten ..
Mitglied: Biber
01.11.2005 um 13:56 Uhr
...dann sollte der obige (ungetestete) Batch ausreichen, wenn die Tippfehler ausgemerzt sind.
Jedenfalls soweit ich das gedanklich durchspielen kann.

Grüße
Biber
Bitte warten ..
Mitglied: ruebensau
02.11.2005 um 04:37 Uhr
Hallo Biber,
das letzte skript klappt nicht ganz so:

for /f "tokens=3,4,7 delims= " %%a in (liste.txt) do (
For /R y:\%%a\%%c\ %%@ in (%%b.*) do (
if exist %%@ echo %%~dpnx@>>FoundLogdatei.log
)
)

es kennt die variablen %%a,%%c nicht in der 2. Forschleife
aber ich habe mir sozusagen eine Alternative zusammengebastelt:

for /f "tokens=1,2" %%a in (liste.txt) do (
dir c:\test\%%a\*%%b.* /s >nul 2>>FoundLogDatei.txt
)

zur erläuterung:
-in der liste.txt gibt es nur noch 2 Spalten, deswegen die Token=1,2
-da dir als rückgabe wert ein errorlevel hat kann man die gefundenen dateien und nichtgefundnen dateien voneinander trennen und in verschiedene logdateien schreiben
- hier ist es möglich auch in den Unterverzeochnissen zu schauen

Das einzige was mir nicht passt, ist, dass er nicht den Dateipfad nachdem ich gesucht habe zurückgibt.

Wenn er die Datei in der entsprechenden Verzeichnisstruktur findet, soll er mir den Pfad in die Logdatei reinschreiben
Wenn er die Datei in der entsprechenden Verzeichnisstruktur nicht findet, doll er mir den Pfad wo ich gesucht habe reinschreiben

Momentan schreibt er mir, wenn er die Datei nicht gefunden hat einfach nur "Datei nicht gefunden" in die Logdatei. Kann er mir nicht den Pfad reinschreiben, z.B.: c:\teste\bma\*3432*.*?

Wenn er die Datei gefunden hat schreibt er mir garnichts in die Logdatei.
Kann er nicht einfach reinschreiben wo er die Datei gefunden hat, z.B. c:\test\bma\bma01\cdf\haring\*55342*.*?

Aber die Dateipfade von gefundene und nicht gefundene Dateien sollen in getrennte Logdateien reingeschrieben werden.

Meinst du dieses Prinzip geht?
Und hast du noch Ideen zu meinen Problemem^^
Bitte warten ..
Mitglied: Biber
02.11.2005 um 21:37 Uhr
Moin rübensau,

Also, zwei Teilprobleme..
1.) die Nicht-gefundenen Dateien.. von denen willst Du ja nur wissen, wo Du sie gesucht hast.

Ich würde dafür aus der Zeile (in der FOR..IN..DO-Schleife)
......dir c:\test\%%a\*%%b.* /s >nul 2>>FoundLogDatei.txt ...

...mehrere Zeilen machen ...beide Ausgaben von STDOUT und STDERR in die Tonne
...
FOR ....IN (liste.txt) DO (
dir c:\test\%%a\*%%b.* /b /s >nul: 2>&1
IF ERRORLEVEL 1 (
echo Keine Datei "*%%b.*" gefunden in c:\test\%%a\*%%b.*! >>%NotFoundLog%
)
)
...

Damit wäre zwar Problem 1 gelöst, aber für die "gefundenen" müsstest Du ein ein DIR aufrufen.. also doppelter Aufwand.

Also wäre nach wie vor mein Credo, beide Fälle über eine FOR /R ..IN..DO_Schleife abzuwickeln, die ist auch schneller als ein "DIR /s"

Also insgesamt...Problem 1 und 2:

FOR ...IN (liste.txt) DO (
For /R y:\%%a\ %%@ in (*%%b.*) do (
if exists %%@ (
echo %%~dpnx@>>FoundLogdatei.log
) ELSE (
echo Keine Datei "*%%b.*" gefunden in c:\test\%%a\*%%b.*! >>%NotFoundLog%
)
) )

>>Und hast du noch Ideen zu meinen Problemen..
Na, wenn das schon Probleme sind, dann hast du tatsächlich ein Problem
Grüße
Biber
P.S. Ist natürlich wie immer nur eine Skizze und ungetestet, aber vom Prinzip her sollte es laufen. Wenn immer noch nicht, dann leg ich mir mal am Wochenende so eine Degu$$a-Verzeichnisstruktur an und puhle die Tippfehler raus. Hoffe aber, dass Du schneller bist.
Bitte warten ..
Mitglied: ruebensau
06.11.2005 um 14:00 Uhr
Tag Biber,
ja, aber so langsam mausere ich mich.
ich habe ein wenig rumgetüfftelt und dabei ist eine batch entstanden, die funktioniert:


rem Variablen setzen:
setlocal
set outpath=c:\test
set inpath=c:\test
set zvspath=c:\test
set LogFount=%outpath%\%0Found.log
set LogNoFount=%outpath%\%0NoFound.log

rem v=Verzeichnis, Laufvariable in FOR-Aussenschleife
rem f=file, Dateinamen in FOR-Innenschleifen

rem Protokollkopf:
for /f "tokens=2" %%D in ('date /t') do for /f %%T in ('time /t') do (set ACTTIME=%%D - %%T & set ACTDATE=%%D)
set TIMESTAMP=%ACTDATE% %ACTTIME%
echo. >>%outpath%/FoundLogdatei.log
echo ---------------------- %ACTTIME% --------------------------------------- >>%LogFount%
echo ---------------------- %ACTTIME% --------------------------------------- >>%LogNoFount%


rem Existierende Dateien:
for /f "tokens=1,2" %%a in (%inpath%\liste.txt) do call :SuchDatei %%a %%b

rem Nicht existierende Dateien:
for /f "tokens=1,2" %%a in (%inpath%/liste.txt) do call :SuchDatei1 %%a %%b

goto L_END

rem ----------------- Unterprogramme ---------------------------------------------------------

:SuchDatei
For /R %zvspath%\%1 %%f in (*%2.*) do echo %%f >>%LogFount%
goto :EOF

:SuchDatei1
set suchdatei=%zvspath%\%1\*%2.*
dir %suchdatei% /s
if %errorlevel% gtr 0 echo %suchdatei% >>%LogNoFount%
goto :EOF

rem ----------------- Ende Unterprogramme -----------------------------------------------------

:L_END
endlocal

Wie du siehst habe ich das mit Unterprogramme realisiert.

Ein Problem welches ich noch habe ist folgendes:

Ich habe eine neue Metadatei mit 2 Spalten:
In der ersten Spalte steht der Zielordner der Datei drinne und in der 2. Spalte der Dateiname wie z.B.:
"BMA - 16" "567465"

Wenn ich nun mein batchskript rüberlaufen lasse, dann erkennt das "-" schon als nächste Spalte, obwohl zwischen BMA und - nur ein Leerzeichen ist und kein Tab. Zur Erklärung, BMA - 16 heißt der Ordner und 567465 ist der Dateiname in dem Ordner.
Momentan gibt mein Skript an dem Unterprogramm 2 Parameter weiter: BMA und -
Ich will aber, dass er die Parameter BMA - 16 und 567465 übergibt.

Warum erkennt mein Programm nicht den Ausdruck BMA - 16 als Inhalt der ersten Spalte?

MfG
Rübensau
Bitte warten ..
Mitglied: Biber
06.11.2005 um 15:38 Uhr
Moin rübensau,
die Standard-Delimiter sind TAB und Leerzeichen, solange Du keine anderen angibst.
Wenn Du nur TABs zulässt, musst Du noch einen Parameter "delims" angeben.

Getestetes Beispiel:
--Datei TabbedDelims.txt (mit TABs!)
BMA - 16 567465
BMA - 27 588888
--- end of Datei TabbedDelims.txt (mit TABs!)

~~~
::----Datei TabbedDelims.bat
@Echo Off & setlocal
:: Delims ist ein TAB. Läßt sich NUR im Batch eingeben, nicht vom CMD-Prompt!!!
for /F "tokens=1,2 delims= " %%i in (TabbedDelims.txt) do echo i: [%%i] j: [%%j]
::---end of Datei TabbedDelims.bat

OutPut:
>TabbedDelims.Bat
i: [BMA - 16] j: [567465]
i: [BMA - 27] j: [588888]
~~
Sieht sonst doch aber prima aus! Bei dem Date-Time-Gehampel lies noch mal gelegentlich in meinem Batch-Tut III (Datums-und Zeitvariablen) rum.
Da bist Du halt nicht kompatibel/portabel bei verschiedenen Rechnern/OSen.
Grüße Biber
Bitte warten ..
Mitglied: ruebensau
07.11.2005 um 22:30 Uhr
Moin Biber,
bei mir will das einfach nicht klappen.

Hier meine Quelldatei:
BMA(leerzeichen)-(leerzeichen)01(tabulator)675435
BMA(leerzeichen)-(leerzeichen)27(tabulator)23416
CC(tabulator)12345

Hier meine batch:
for /F "tokens=1,2 delims=" %%a in (test.txt) do (
echo echo a: [%%a] b: [%%b] >> ergebnis.txt
)

for /F "tokens=1,2 delims= " %%a in (test.txt) do (
echo echo a: [%%a] b: [%%b] >> ergebnis.txt
)

for /F "tokens=1,2" %%a in (test.txt) do (
echo echo a: [%%a] b: [%%b] >> ergebnis.txt
)

Hier der Output:
echo a: [BMA - 01 675435] b: []
echo a: [BMA - 27 23416] b: []
echo a: [CC 12345] b: []

echo a: [BMA] b: [-]
echo a: [BMA] b: [-]
echo a: [CC 12345] b: []

echo a: [BMA] b: [-]
echo a: [BMA] b: [-]
echo a: [CC] b: [12345]

Fazit:
Keines meiner Versuche gibt mir das richtige Ergebnis.
Was tun?
Bitte warten ..
Mitglied: Biber
08.11.2005 um 11:16 Uhr
Moin rübe,
das muss klappen, wenn als "Delims" ein Tabulatorzeichen angegeben ist.

for /F "tokens=1,2 delims=(TAB)" %%a in (test.txt) do ( ....

Wie letztes Mal geschrieben, TAB lässt sich nur via Editor eingeben (nicht vom CMD-Prompt)
So, wie der Output aussieht, wurde da kein TAB erkannt. Das Beispiel, dass ich letztes Mal gepostet habe, war aber wirklich getestet. Also evtl. ein Editor-Problem.
Sonst schick mir eine pn mit Deiner Mailadresse, wenn es gar nicht tun will.

Biber
Bitte warten ..
Mitglied: ruebensau
09.11.2005 um 00:16 Uhr
ja, hast recht.
Habe wirklich nur ein Leerzeichen statt ein Tab eingebaut gehabt^^
Thx
Bitte warten ..
Mitglied: ruebensau
11.11.2005 um 12:11 Uhr
Hiho Biber,
nochmal eine frage am rande^^

for /f "tokens=1,2,3,4,5 delims= " %%a in (%outpathd%s_nummern_not_found4n.log) do (
findstr /R %%a%%b %outpath%kompletter_dateipfad.txt >>found.log
)

obwohl er strings findet ist meine found.log immer leer
warum schreibt er mir nichts rein?

MfG
Rübensau
Bitte warten ..
Mitglied: Biber
11.11.2005 um 12:38 Uhr
Moin rübe,
>>obwohl er strings findet ist meine found.log immer leer
...keine voreiligen Schlüsse.. er findet ja nichts

findstr /R %%a%%b %outpath%kompletter_dateipfad.txt >>found.log

Findstr mit Parameter /R sucht nicht etwa "Rekursiv", sondern nach einem "Regulären Ausdruck".
Nix gefunden = No Output --> mal Anzahl Schleifenelemente gleich 0 Byte in "found.log".
Works as designed.
Nimm statt dessen
findstr ohne /R oder findstr /i.

Schönen Nachmittag noch
Biber
Bitte warten ..
Mitglied: ruebensau
28.11.2005 um 13:03 Uhr
super, jetzt schreibt er auch was rein in die textdatei^^

nächste frage, habe folgende Stapelverarbeitungsdatei:
for /f "tokens=2,7 delims= " %%a in (19_nummern_found4.log) do (
findstr /i %%a blue.txt >>import.txt
echo %%b >>import.txt
)

Also, die Schleife gibt dem findstr eine Nummer aus der 19_nummer_found4.log.
Danach sucht das findstr in der Datei blue.txt nach dieser nummer und schreibt anschließend die ganze Zeile in die Import-Datei.

Meine frage ist,
in der 19_nummern_found4.log ist auch ein vollständiger dateipfad hinterlegt.
Diesen Pfad möchte ich auch mit in die import datei reinschreiben.
Deswegen auch delims=2,7.
Wie mache ich das mit dem findstr befehl?

So sieht blue.txt aus:
19/ 1253 ÜBERSICHTS-U.ENDWÄSSERUNGSPLAN ACH 2000 MOTO E ACH A SCAN A A1
19/ 1285 LAGE U. QUERSCHNITT ROW-KANÄLE BEI SCHACHT 204 KANAL -- AUSSENAN W SCAN A A1
19/ 1305 ABSTECKSKIZZE M1-ANLAGE VERMESSUNGSINGENIEUR C MMA L SCAN A AO
19/ 1344 KOPIE ROW-KANAL SCHACHT 205 -- AUSSENAN W SCAN A AO
19/ 1347 SITUATIONSPLAN KANAL-SCHACHT 9 U.ROHRBRÜCKENSTÜTZE 19 -- AUSSENAN W ARCHIV A AO
19/ 1361 SITUATIONSPLAN KÜHLWASSERLEITUNG ZUR PUMPENSTATION -- AUSSENAN W ARCHIV A AO
19/ 1362 LÄNGSSCHNITT C-D GEHÖRT ZUR ZEICHNUNG 19/01347 A AUSSENAN A ARCHIV A A1

so sieht 19_nummern_found4.log aus:
19 1253 ACH A SCAN A \\wesdata2.wesnet.degussanet.com\ta-cad\ACH\ach_scn\a1901253.tif
19 1285 AUSSENAN W SCAN A \\wesdata2.wesnet.degussanet.com\ta-cad\AUSSENAN\AANL_SCN\w1901285.tif
19 1305 MMA L SCAN A \\wesdata2.wesnet.degussanet.com\ta-cad\MMA\MMA_SCN\l1901305.tif
19 1344 AUSSENAN W SCAN A \\wesdata2.wesnet.degussanet.com\ta-cad\AUSSENAN\AANL_SCN\w1901344.tif
19 1479 ACH W SCAN A \\wesdata2.wesnet.degussanet.com\ta-cad\ACH\ach_scn\w1901479.tif
19 1508 AUSSENAN L SCAN A \\wesdata2.wesnet.degussanet.com\ta-cad\AUSSENAN\AANL_SCN\l1901508.tif
19 1545 AUSSENAN L SCAN A \\wesdata2.wesnet.degussanet.com\ta-cad\AUSSENAN\AANL_SCN\l1901545.tif
19 1566 SK A SCAN A \\wesdata2.wesnet.degussanet.com\ta-cad\SK\SK_SCN\a1901566.tif
19 1577 ARBVO W SCAN A \\wesdata2.wesnet.degussanet.com\ta-cad\ARBVO\arbvo_scn\w1901577.tif
19 1592 AUSSENAN L SCAN A \\wesdata2.wesnet.degussanet.com\ta-cad\AUSSENAN\AANL_SCN\l1901592.tif
19 1594 AUSSENAN K SCAN A \\wesdata2.wesnet.degussanet.com\ta-cad\AUSSENAN\AANL_SCN\k1901594.tif


So soll das Ergebnis(import.txt) aussehen, getrennt durch tabs:
\\wesdata2.wesnet.degussanet.com\ta-cad\ACH\ach_scn\a1901253.tif 19/ 1253 ÜBERSICHTS-U.ENDWÄSSERUNGSPLAN ACH 2000 MOTO E ACH A SCAN A A1
\\wesdata2.wesnet.degussanet.com\ta-cad\AUSSENAN\AANL_SCN\w1901285.tif 19/ 1285 LAGE U. QUERSCHNITT ROW-KANÄLE BEI SCHACHT 204 KANAL -- AUSSENAN W SCAN A A1
\\wesdata2.wesnet.degussanet.com\ta-cad\MMA\MMA_SCN\l1901305.tif 19/ 1305 ABSTECKSKIZZE M1-ANLAGE VERMESSUNGSINGENIEUR C MMA L SCAN A AO
.....
.......
.......
........
.........
Bitte warten ..
Mitglied: Biber
30.11.2005 um 20:18 Uhr
Moin rübe,
langsam wird unübersichtlich in Deinen Zwischendateien..
Tasten wir uns mal ran:
$MyPrompt$for /f "tokens=6,*" %i in (19nrfoundlog4.txt) do @echo Token6=%j
Token6=\\wesdata2.wesnet.degussanet.com\ta-cad\ACH\ach_scn\a1901253.tif
Token6=\\wesdata2.wesnet.degussanet.com\ta-cad\AUSSENAN\AANL_SCN\w1901285.tif
Token6=\\wesdata2.wesnet.degussanet.com\ta-cad\MMA\MMA_SCN\l1901305.tif
Token6=\\wesdata2.wesnet.degussanet.com\ta-cad\AUSSENAN\AANL_SCN\w1901344.tif
Token6=\\wesdata2.wesnet.degussanet.com\ta-cad\ACH\ach_scn\w1901479.tif
Token6=\\wesdata2.wesnet.degussanet.com\ta-cad\AUSSENAN\AANL_SCN\l1901508.tif
Token6=\\wesdata2.wesnet.degussanet.com\ta-cad\AUSSENAN\AANL_SCN\l1901545.tif
Token6=\\wesdata2.wesnet.degussanet.com\ta-cad\SK\SK_SCN\a1901566.tif
Token6=\\wesdata2.wesnet.degussanet.com\ta-cad\ARBVO\arbvo_scn\w1901577.tif
Token6=\\wesdata2.wesnet.degussanet.com\ta-cad\AUSSENAN\AANL_SCN\l1901592.tif
Token6=\\wesdata2.wesnet.degussanet.com\ta-cad\AUSSENAN\AANL_SCN\k1901594.tif

Den Rest morgen.. essen wartet..sorry..
Biber
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Ä in batch Datei (12)

Frage von BergEnte zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

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

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...