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
Kommentar vom Moderator Biber am 21.03.2012 um 15:17:58 Uhr
Verschoben nach "Patch & Shell". Und Codeformatierung nachgetragen.
GELÖST

Mit einer Patch Datei eine txt Zeile für Zeile auslesen und beim finden der Nummer eine Aktion ausführen

Frage Entwicklung Batch & Shell

Mitglied: randy73

randy73 (Level 1) - Jetzt verbinden

21.03.2012, aktualisiert 15:17 Uhr, 2952 Aufrufe, 8 Kommentare

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?

01.
@echo off 
02.
for /f %%i in (X010129730188_M10P_v01.LDT) do set ausgabe=!%ausgabe%!;%%i ( 
03.
    set ausgabe=%ausgabe:~6,6% 
04.
    if %ausgabe% == 920200 ( 
05.
		set ausgabe=%ausgabe:~10,2% 
06.
                move X010129730188_M10P_v01.LDT %ausgabe%\ 
07.
                echo Datei gefunden 
08.
    ) else ( 
09.
		echo Datei nicht gefunden %%i 
10.
11.
)
Vielen Dank!!

Gruß
Andy
Mitglied: Skyemugen
21.03.2012 um 11:39 Uhr
Aloha,

  1. möchte ich dich bitten unsere schöne <code></code> Formatierung einzupflegen, liest sich besser.
  2. Woher hast du set ausgabe=!%ausgabe%! bzw. wolltest du nicht ein mal irgendwie ursprünglich mit setlocal enabledelayedexpansion und !ausgabe! arbeiten? Wahrscheinlich schon

Deine Anfrage gepaart mit deinem Skript gibt mir Rätsel, wie genau darf man
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ögerung

greetz André
Bitte warten ..
Mitglied: 60730
21.03.2012 um 13:23 Uhr
Moin,

Zitat von randy73:
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?

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.
Bitte warten ..
Mitglied: randy73
21.03.2012 um 15:12 Uhr
Denn Sie wissen nicht was Sie tun! 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
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.



01.
$zeile = str_split(%%i, 3, 4); 
02.
$ordner = str_split(%%i, 7, 2);
Wie bekomme ich das hin?
Bitte warten ..
Mitglied: 60730
21.03.2012 um 16:31 Uhr
Zitat von randy73:
Denn Sie wissen nicht was Sie tun!
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
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 hergeholt
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.

Oder ne subroutine, wie rob & bastla gerne nehmen.

01.
> $zeile = str_split(%%i, 3, 4); 
02.
> $ordner = str_split(%%i, 7, 2); 
03.
> 
Wie bekomme ich das hin?

Naja - verfolge die hints
Bitte warten ..
Mitglied: Skyemugen
21.03.2012 um 17:48 Uhr
Aloha,

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.

01.
@echo off & setlocal 
02.
set "Pfad=E:\Skripte" 
03.
set "Zahl=8310" 
04.
 
05.
pushd "%Pfad%" 
06.
for /f "delims=" %%s in ('dir /b /a-d *.LDT') do call :Ablauf "%%s" 
07.
popd 
08.
pause 
09.
goto :eof 
10.
 
11.
:Ablauf 
12.
for /f "delims=" %%m in ('findstr %Zahl% %1') do set "Ausgabe=%%m" 
13.
if not defined Ausgabe goto :eof 
14.
call set "Ausgabe=%%Ausgabe:*%Zahl%=%%" 
15.
set "Ziel=%Ausgabe:~0,2%" 
16.
if not exist %Ziel% md %Ziel% 
17.
echo move %1 "%Ziel%" 
18.
set "Ausgabe=" 
19.
goto :eof
mal als Beispiel dafür,

man kann z.B. auch für die Suche findstr /B [0-9][0-9][0-9]%Zahl% nutzen

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é
Bitte warten ..
Mitglied: randy73
22.03.2012 um 09:55 Uhr
Hi,

erst mal danke Skymugen für deine schnelle Antworten

Nun die Karten auf den Tisch,

--- kann die Zahlenkombination auch sonst an anderer Stelle [...] enthalten sein, wenn nein, bräuchte man das ganze Variablengehampel nicht mit der Verzögerung

die Zahl kann leider auch an anderen Stellen vorkommen, daher ist die Position (3 Stelle) wichtig.

--- Dein zweites Beispiel weicht stark vom ersten Beispiel ab, bitte mal glasklar jetzt sagen, was WO ausgelesen werden soll.

Ich sag mal, dass erste Beispiel war noch weit vom Ziel entfernt . Dein Script funktioniert auf jeden Fall schon einmal, Danke. Taucht die Zahl in der Datei noch an einer anderen Stelle auf, nimmt er einen falschen Wert. Wie kann man dies noch regeln?

Vielen Dank Skymugen

Gruß
Andy
Bitte warten ..
Mitglied: Skyemugen
22.03.2012 um 11:30 Uhr
Aloha,

Wie kann man dies noch regeln?
...
01.
for /f "delims=" %%m in ('findstr /B [a-z0-9][a-z0-9][a-z0-9]%Zahl% %1') do set "Ausgabe=%%m"
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
Bitte warten ..
Mitglied: randy73
22.03.2012 um 12:21 Uhr
Danke André,

dass sieht jetzt super aus, vielen Dank

Gruß Andy

P.S.: Und sorry wegen deinen Namen
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Installation
gelöst Mit Powershell in einer Datei eine Zeile auslesen (6)

Frage von Bommi1961 zum Thema Installation ...

Batch & Shell
gelöst Einzelne Zeilen in txt Datei speichern und auslesen (7)

Frage von noah1400 zum Thema Batch & Shell ...

PHP
gelöst Externe XML-Datei in PHP auslesen (18)

Frage von Akrosh zum Thema PHP ...

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

Frage von patz223 zum Thema Windows Userverwaltung ...

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 ...