Mit einer Patch Datei eine txt Zeile für Zeile auslesen und beim finden der Nummer eine Aktion ausführen
Hallo,
ich hoffe es kann mir jemand weiterhelfen, denn ich suche schon seit zwei Tagen eine Lösung für folgendes Problem:
Ich brauche eine Batch-Datei die ein Ordner in einem bestimmten interval Scannt und wenn eine Datei reinkommt, diese nach einer bestimmten Nr. ausliest und in den dafür vorgesehenen Ordner verschiebt. Mein Script liest aber leider nur die letzte Zeile aus
. Ich bräucht Zeile für Zeile in einer Variable die ich dann mit Split(6,6) vergleichen kann. Hier komm ich mit meinen geringen DOS kenntnisen nicht weiter. Wer kann mir hier helfen?
Vielen Dank!!
Gruß
Andy
ich hoffe es kann mir jemand weiterhelfen, denn ich suche schon seit zwei Tagen eine Lösung für folgendes Problem:
Ich brauche eine Batch-Datei die ein Ordner in einem bestimmten interval Scannt und wenn eine Datei reinkommt, diese nach einer bestimmten Nr. ausliest und in den dafür vorgesehenen Ordner verschiebt. Mein Script liest aber leider nur die letzte Zeile aus
@echo off
for /f %%i in (X010129730188_M10P_v01.LDT) do set ausgabe=!%ausgabe%!;%%i (
set ausgabe=%ausgabe:~6,6%
if %ausgabe% == 920200 (
set ausgabe=%ausgabe:~10,2%
move X010129730188_M10P_v01.LDT %ausgabe%\
echo Datei gefunden
) else (
echo Datei nicht gefunden %%i
)
)
Gruß
Andy
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 21.03.2012 um 15:17:58 Uhr
Verschoben nach "Patch & Shell". Und Codeformatierung nachgetragen.
Content-ID: 182350
Url: https://administrator.de/forum/mit-einer-patch-datei-eine-txt-zeile-fuer-zeile-auslesen-und-beim-finden-der-nummer-eine-aktion-ausfuehren-182350.html
Ausgedruckt am: 22.04.2025 um 02:04 Uhr
8 Kommentare
Neuester Kommentar
Aloha,
Deine Anfrage gepaart mit deinem Skript gibt mir Rätsel, wie genau darf man
Nevermind, schon klargeworden genau darum mag ich keine Plaintext-Skripte, da lese ich nur und verarbeite nicht.
Wie gesagt, grundsätzlich benötigst du die verzögerte Variablenerweiterung, sonst wird nur der letzte Fund in die Variable geschrieben, sofern man diese nicht per Unterprozess aufruft. Aber eine nicht definierte Variable in sich selbst zu definieren ... auf die Idee muss man erst einmal kommen
edit: Aber ... ergibt
nicht immer 00?
edit²: Äh, irgendwie dabei ist heute gar nicht Montag ... der Dateiname soll nach der Nummer ausgelesen werden oder der Inhalt? Dein Skript liest doch momentan den Dateinamen aus. Beim Nummernfinden in eine der Zeilen wäre ich für die Nutzung von
greetz André
- möchte ich dich bitten unsere schöne ##blue|## Formatierung einzupflegen, liest sich besser.
- Woher hast du
set ausgabe=!%ausgabe%!
bzw. wolltest du nicht ein mal irgendwie ursprünglich mitsetlocal enabledelayedexpansion
und!ausgabe!
arbeiten? Wahrscheinlich schon
wenn eine Datei reinkommt, diese nach einer bestimmten Nr. ausliest
verstehen? Ich nehme an, diese Nummer kommt IN der Datei vor? Wie wird sie bestimmt, wenn ständig eine andere Datei in den Ordner kommt? Dein momentaner Zustand liest ja immer dieselbe Datei aus.Nevermind, schon klargeworden genau darum mag ich keine Plaintext-Skripte, da lese ich nur und verarbeite nicht.
Wie gesagt, grundsätzlich benötigst du die verzögerte Variablenerweiterung, sonst wird nur der letzte Fund in die Variable geschrieben, sofern man diese nicht per Unterprozess aufruft. Aber eine nicht definierte Variable in sich selbst zu definieren ... auf die Idee muss man erst einmal kommen
edit: Aber ... ergibt
set ausgabe=%ausgabe:~6,6%if %ausgabe% == 920200 (set ausgabe=%ausgabe:~10,2%
nicht immer 00?
edit²: Äh, irgendwie dabei ist heute gar nicht Montag ... der Dateiname soll nach der Nummer ausgelesen werden oder der Inhalt? Dein Skript liest doch momentan den Dateinamen aus. Beim Nummernfinden in eine der Zeilen wäre ich für die Nutzung von
findstr
, kann die Zahlenkombination auch sonst an anderer Stelle als 6,6 enthalten sein, wenn nein, bräuchte man das ganze Variablengehampel nicht mit der Verzögerunggreetz André

Moin,
Mit einer Patch Datei eine txt Zeile für Zeile auslesen und beim finden der Nummer eine Aktion ausführen
Lol kommst du aus einer patchworkfamily?
Wenn ja, dann willkommen in der batchweltcimunity...
Nimm den fuehrenden doppelbefel raus und schau mal an, wo der hund begraben ist.
Hab ich in 20 sekunden gesehen.
Gruss
Ps dos ist das nicht, das ist schon was, wozu du die command brauchst.
Die ist nur verwandt, aber nicht verschwaegert mit dos.
Mit einer Patch Datei eine txt Zeile für Zeile auslesen und beim finden der Nummer eine Aktion ausführen
Lol kommst du aus einer patchworkfamily?
Wenn ja, dann willkommen in der batchweltcimunity...
Hallo,
ich hoffe es kann mir jemand weiterhelfen, denn ich suche schon seit zwei Tagen eine Lösung für folgendes Problem:
Ich brauche eine Batch-Datei die ein Ordner in einem bestimmten interval Scannt und wenn eine Datei reinkommt, diese nach einer
bestimmten Nr. ausliest und in den dafür vorgesehenen Ordner verschiebt. Mein Script liest aber leider nur die letzte Zeile
aus
. Ich bräucht Zeile für Zeile in einer Variable die ich dann mit Split(6,6) vergleichen kann. Hier komm ich mit
meinen geringen DOS kenntnisen nicht weiter. Wer kann mir hier helfen?
ich hoffe es kann mir jemand weiterhelfen, denn ich suche schon seit zwei Tagen eine Lösung für folgendes Problem:
Ich brauche eine Batch-Datei die ein Ordner in einem bestimmten interval Scannt und wenn eine Datei reinkommt, diese nach einer
bestimmten Nr. ausliest und in den dafür vorgesehenen Ordner verschiebt. Mein Script liest aber leider nur die letzte Zeile
aus
meinen geringen DOS kenntnisen nicht weiter. Wer kann mir hier helfen?
Nimm den fuehrenden doppelbefel raus und schau mal an, wo der hund begraben ist.
Hab ich in 20 sekunden gesehen.
Gruss
Ps dos ist das nicht, das ist schon was, wozu du die command brauchst.
Die ist nur verwandt, aber nicht verschwaegert mit dos.

Ei bub maerr habbe dir doch de dipp gegebbe umsezze mussdde des alllans.
Da biba haedd dir de gode vormaddierd und des geraffel in den rischddisch dud gebackd
Da ohndree haett dir de dipp midderem jandelay expansionisten gegebbe
Und da paapa haedd dir verzaehlt, duh de verdammischdde doppelbefehl, der wo sich in de ersdde zeile nei gedan hat in de donn dredde...
Ich hab sowas noch nie über eine Batch-Datei Programmiert, da tu ich mir mit VB schon
Oder ne subroutine, wie rob & bastla gerne nehmen.
Wie bekomme ich das hin?
Naja - verfolge die hints
Da biba haedd dir de gode vormaddierd und des geraffel in den rischddisch dud gebackd
Da ohndree haett dir de dipp midderem jandelay expansionisten gegebbe
Und da paapa haedd dir verzaehlt, duh de verdammischdde doppelbefehl, der wo sich in de ersdde zeile nei gedan hat in de donn dredde...
Ich hab sowas noch nie über eine Batch-Datei Programmiert, da tu ich mir mit VB schon
leichter. Aber hier geht es leider nicht anders.
Ich muss den Inhalt einer Datei auslesen und nach einer vierstellige Zahl an der 3 Position suchen, wenn ich diese Zahl gefunden
hab benötige ich die zweistellige Zahl dahinter.
Beispiel-Datei:
014810001184
01983100129730188 <-- Hier muss ich nach der 8310 suchen und benötige die 01 dahinter
Also ist doch schon mal ein findstr /? Nicht so weit hergeholtIch muss den Inhalt einer Datei auslesen und nach einer vierstellige Zahl an der 3 Position suchen, wenn ich diese Zahl gefunden
hab benötige ich die zweistellige Zahl dahinter.
Beispiel-Datei:
014810001184
01983100129730188 <-- Hier muss ich nach der 8310 suchen und benötige die 01 dahinter
01983110129730188
0108609P
Ich würde ja gerne die Zeile in eine Variable stecken, und dieses mit einen mir nicht bekannten split-Befehl auswerten. Ich
habe es leider auch nicht geschafft, die Zeile in einer Variable zu packen.
Echo off.... Und dann siehst du warum...jandelay expresionistenclub laesst gruessen.0108609P
Ich würde ja gerne die Zeile in eine Variable stecken, und dieses mit einen mir nicht bekannten split-Befehl auswerten. Ich
habe es leider auch nicht geschafft, die Zeile in einer Variable zu packen.
Oder ne subroutine, wie rob & bastla gerne nehmen.
> $zeile = str_split(%%i, 3, 4);
> $ordner = str_split(%%i, 7, 2);
>
Wie bekomme ich das hin?
Naja - verfolge die hints
Aloha,
so jetzt mal Karten auf den Tisch, du beantwortest ja leider nicht meine Fragen ...
Sollte die gesuchte Zahl nur EINMAL in einer Datei vorkommen, wird das Ding noch viel einfacher, wenn du eigentlich nur die zwei Stellen nach der gesuchten Zahl haben willst.
mal als Beispiel dafür,
man kann z.B. auch für die Suche
Mir ist noch nicht ganz klar, ob du in allen Dateien dieselbe Zahl suchst oder ob die Stellen überhaupt wenn dann gleich wären (darum habe ich die Variante erst einmal weggelassen) etc.
greetz André
so jetzt mal Karten auf den Tisch, du beantwortest ja leider nicht meine Fragen ...
kann die Zahlenkombination auch sonst an anderer Stelle [...] enthalten sein, wenn nein, bräuchte man das ganze Variablengehampel nicht mit der Verzögerung
Dein zweites Beispiel weicht stark vom ersten Beispiel ab, bitte mal glasklar jetzt sagen, was WO ausgelesen werden soll.Sollte die gesuchte Zahl nur EINMAL in einer Datei vorkommen, wird das Ding noch viel einfacher, wenn du eigentlich nur die zwei Stellen nach der gesuchten Zahl haben willst.
@echo off & setlocal
set "Pfad=E:\Skripte"
set "Zahl=8310"
pushd "%Pfad%"
for /f "delims=" %%s in ('dir /b /a-d *.LDT') do call :Ablauf "%%s"
popd
pause
goto :eof
:Ablauf
for /f "delims=" %%m in ('findstr %Zahl% %1') do set "Ausgabe=%%m"
if not defined Ausgabe goto :eof
call set "Ausgabe=%%Ausgabe:*%Zahl%=%%"
set "Ziel=%Ausgabe:~0,2%"
if not exist %Ziel% md %Ziel%
echo move %1 "%Ziel%"
set "Ausgabe="
goto :eof
man kann z.B. auch für die Suche
findstr /B [0-9][0-9][0-9]%Zahl%
nutzenMir ist noch nicht ganz klar, ob du in allen Dateien dieselbe Zahl suchst oder ob die Stellen überhaupt wenn dann gleich wären (darum habe ich die Variante erst einmal weggelassen) etc.
greetz André
Aloha,
als Ersatz für die vorhandene Zeile 12, damit sucht er vom Zeilenanfang den Treffer, der in den ersten drei Positionen unbekannten alphanumerischen Inhalt gefolgt von der gesuchten Zahl enthält 
greetz André
P.S.: Bitte achte doch auf die Schreibweise meines Nicks oder verwende meinen Namen, ich habe mit dem Himmel nun wirklich nichts zu tun
Wie kann man dies noch regeln?
...for /f "delims=" %%m in ('findstr /B [a-z0-9][a-z0-9][a-z0-9]%Zahl% %1') do set "Ausgabe=%%m"
greetz André
P.S.: Bitte achte doch auf die Schreibweise meines Nicks oder verwende meinen Namen, ich habe mit dem Himmel nun wirklich nichts zu tun