Top-Themen

Aktuelle Themen (A bis Z)

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 30.12.2010 um 23:16:19 Uhr
Auf "Abgehakt" gesetzt.
GELÖST

In Batch-file durchnummerierte Dateinamen verarbeiten

Frage Entwicklung Batch & Shell

Mitglied: Yosimo

Yosimo (Level 1) - Jetzt verbinden

29.12.2010, aktualisiert 30.12.2010, 4587 Aufrufe, 9 Kommentare

Hallo,

ich habe ein Batch-file geschrieben mit folgendem Inhalt:

copy /b static.ps + 00001.txt NEU_00001.txt
copy /b static.ps + 00002.txt NEU_00002.txt
copy /b static.ps + 00003.txt NEU_00003.txt
copy /b static.ps + 00004.txt NEU_00004.txt
copy /b static.ps + 00005.txt NEU_00005.txt
copy /b static.ps + 00006.txt NEU_00006.txt
copy /b static.ps + 00007.txt NEU_00007.txt
copy /b static.ps + 00008.txt NEU_00008.txt
copy /b static.ps + 00009.txt NEU_00009.txt
copy /b static.ps + 00010.txt NEU_00010.txt
usw. ...

Es gibt ca. 1000 durchnummerierte Textdateien und ein einziges static.ps-file, die je zu einem neuen Textfile zusammenkopiert werden.
Das funktioniert soweit ganz gut.

Da ich diese Aufgabe aber des öfteren und immer mit unterschiedlicher Anzahl an durchnummerierten Textdateien zu erledigen habe, hätte ich das im batch gerne automatisch (mit einer Zählfunktion?) abgearbeitet, damit ich nicht jedesmal das Batch-file neu anpassen muß.
Es soll die Anzahl der durchnummerierten Textdateien erkennen und dann den copierbefehl automatisch durcharbeiten. Habe mich schon mit der FOR Anweisung versucht, komme da aber nicht weiter.
Ob jemand helfen kann?

MfG
Yosimo
Mitglied: bastla
29.12.2010 um 14:54 Uhr
Hallo Yosimo und willkommen im Forum!

Soferne jede zu verarbeitende Datei dem Muster "0*.txt" entspricht, sollte doch eigentlich (ungetestet)
for %i in (0*.txt) do copy /b static.ps + %i NEU_%i
genügen. Wenn Du daraus einen Batch machen willst, jeweils %%i anstelle von %i verwenden ...
Falls Du tatsächlich die einzelnen Nummern benötigen solltest (und die Nummerierung lückenlos ist), könnte ein Batch für 5-stellige Nummern etwa so aussehen:
01.
@echo off & setlocal 
02.
set /a Nr=100001 
03.
:Loop 
04.
set Datei=%Nr:~-5%.txt 
05.
if not exist %Datei% goto :Done 
06.
echo Bearbeite: %Datei% 
07.
copy /b static.ps + %Datei% NEU_%Datei% >nul 
08.
set /a Nr+=1 
09.
goto :Loop 
10.
 
11.
:Done 
12.
echo Fertig.
Grüße
bastla
Bitte warten ..
Mitglied: Yosimo
29.12.2010 um 18:01 Uhr
Hallo bastla,

das ging aber fix, vielen herzlichen Dank!!

Der Einzeiler funktioniert nicht - macht aber nichts: das zweite Batch-Script läuft in meiner Testumgebung tadellos.

Das macht Hunger nach mehr: Mein nächster Schritt ist, die Batch-Datei so zu ergänzen, dass die neuen Dateinamen in einer weiteren Textdatei (CSV-Datei) 1-spaltig aufgelistet werden.


Spaltentitel
NEU_00001.txt
NEU_00002.txt
NEU_00003.txt
NEU_00004.txt
usw....


Vielleicht lässt sich diese ja auch automatisch erzeugen (mache ich momentan händisch in Excel).
Und wenn man dieser Spalte noch einen beliebigen Spaltentitel hinzufügen konnte (evtl. aus einer vorbereiteten einzeiligen Textdatei?), dann wäre das richtig großartig.

Vielen Dank nochmal,
Yosimo
Bitte warten ..
Mitglied: bastla
29.12.2010 um 20:12 Uhr
Hallo Yosimo!

Das wäre dann in etwa:
01.
@echo off & setlocal 
02.
set "CSV=D:\Die.csv" 
03.
set "Vorlage=D:\Vorbereitete einzeilige Textdatei.txt" 
04.
 
05.
copy "%Vorlage%" "%CSV%" >nul 
06.
set /a Nr=100001 
07.
:Loop 
08.
set Datei=%Nr:~-5%.txt 
09.
if not exist %Datei% goto :Done 
10.
echo Bearbeite: %Datei% 
11.
copy /b static.ps + %Datei% NEU_%Datei% >nul 
12.
>>"%CSV%" echo NEU_%Datei% 
13.
set /a Nr+=1 
14.
goto :Loop 
15.
 
16.
:Done 
17.
echo Fertig.
Wenn es übrigens keinen besonderen Grund dafür gibt, dass die Überschrift in einer eigenen Datei stehen muss, würde anstelle der Zeilen 3 und 5 auch ein einfaches
>"%CSV%" echo @Mergedtext
genügen ...

Grüße
bastla

P.S.: Der Oneliner (direkt an der Kommandozeile verwendet, ansonsten, wie angegeben, jeweils mit %%i) macht bei mir auch, was er soll ...
Bitte warten ..
Mitglied: Yosimo
29.12.2010 um 22:55 Uhr
Ist ja der Wahnsinn, das klappt ja prima!
Vielen Dank bastla.

Ist es denn noch möglich, unabhängig von der "Vorbereitete einzeilige Textdatei.txt" zu werden? Also dass man den Spaltentitel innerhalb der Batch-Datei erzeugt und keine externe Textdatei mehr braucht? Der Spaltentitel soll mit einem @-Zeichen beginnen, z.B. @Mergedtext.

Dazu habe ich jetzt mit der Umgebungsvariablen "Vorlage" experimentiert, aber die meldet immer, dass Sie eine Datei benötigt. Außerdem weiß ich nicht wie ich den Zeilenumbruch nach dem Spaltentitel gestalten muss.

Vielen herzlichen Dank nochmal,
Yosimo



>Wenn es übrigens keinen besonderen Grund dafür gibt, dass die Überschrift in einer eigenen Datei stehen muss, würde anstelle der Zeilen 3 und 5 auch ein einfaches
>"%CSV%" echo Spaltentitel

Ach ich Trottel, da steht es ja. Vor lauter Euphorie glatt übersehen.
DAS ist es - Suuuper.

Danke, das wars denn für heute.
Bitte warten ..
Mitglied: bastla
29.12.2010 um 23:04 Uhr
Hallo Yosimo!

Die Variante ohne Datei hatte ich zwischenzeitlich schon ergänzt - also einfach die Zeilen 3 und 5 durch
>"%CSV%" echo @Mergedtext
ersetzen.

Der Zeilenumbruch "passiert" eigentlich von selbst (es ist in Batch aufwändiger, eine Zeile ohne Umbruch zu schreiben) ...

Grüße
bastla
Bitte warten ..
Mitglied: Yosimo
29.12.2010 um 23:08 Uhr
Hallo bastla,

hab's gerade gemerkt, sorry und vielen Dank!

Grüße
Yosimo
Bitte warten ..
Mitglied: Yosimo
29.12.2010 um 23:24 Uhr
Hallo bastla,

Zitat von bastla:
P.S.: Der Oneliner (direkt an der Kommandozeile verwendet, ansonsten, wie angegeben, jeweils mit %%i) macht bei mir auch, was er
soll ...


Das mit dem oneliner werde ich demnächst nochmal näher untersuchen.
Sehe ich das richtig, dass hier maximal nur die ersten 999 textfiles verarbeitet werden, da ab dem 1000-sten File die Bedingung (0*.txt) nicht mehr zutrifft?

Grüße
Yosimo
Bitte warten ..
Mitglied: bastla
29.12.2010 um 23:34 Uhr
Hallo Yosimo!
Sehe ich das richtig, dass hier maximal nur die ersten 999 textfiles verarbeitet werden, da ab dem 1000-sten File die Bedingung (0*.txt) nicht mehr zutrifft?
Soferne Deine Dateien wie beschrieben 5-stellige Nummern haben, ginge es auch bei "0*.txt" bis zur "09999.txt" ...

Abgesehen davon ließe sich die Zeile auf
for /f %i in ('dir /b *.txt^|findstr /v /b "NEU_"') do copy /b static.ps + %i NEU_%i
variieren und würde dann einfach alle *.txt-Dateien, die nicht mit "NEU_" beginnen, verarbeiten.

Um schließlich auch noch die .csv-Datei zu erhalten, müsste diese Zeile etwa so aussehen:
>D:\Die.csv echo @Mergedtextecho & for /f %i in ('dir /b *.txt^|findstr /v /b "NEU_"') do copy /b static.ps + %i NEU_%i >nul & >>D:\Die.csv echo NEU_%i
Grüße
bastla
Bitte warten ..
Mitglied: Yosimo
30.12.2010 um 10:23 Uhr
Hallo bastla,

ja, der Einzeiler funktioniert genauso. Ich hatte ihn anfangs aus der Batch-Datei gestartet ohne %%i anstelle von %i zu verwenden.
Die Pfadangabe für die CSV-Datei habe ich rausgenommen, da ich alle Batch-Aufgaben im gleichen Directory ausführe, diese aber in verschiedenen Verzeichnispfaden liegen.

Grüße und Dank
Yosimo
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Ini File mit Batch auslesen und weiter verarbeiten
gelöst Frage von ZendaraBatch & Shell2 Kommentare

Hallo, Ich habe ein Problem mit einem Batch File welches mir Variablen aus einem Ini File auslesen und zB. ...

Batch & Shell
Ähnliche Dateinamen zusammen verarbeiten
gelöst Frage von JT-131Batch & Shell2 Kommentare

Hallo zusammen, gibt es eine Möglichkeit die ersten 7 Zeichen eines Dateinamens auszulesen und in eine variable zu speichern ...

Sonstige Systeme
Batch Dateinamen zerlegen
Frage von MummelSonstige Systeme5 Kommentare

Hallo Liebe Leute, hoffe mir kann einer helfen. Ich soll eine Batch schreiben, die eine abfrage macht. (Soll ein ...

Batch & Shell
Batch: doppeltes Leerzeichen in Dateinamen?
gelöst Frage von WoswaasiBatch & Shell3 Kommentare

Hallo! Wir verarbeiten bei uns in der Arbeit Audio-Dateien, die über Nacht in 5-Minuten-Abschnitte gesplittet werden. Ich habe dafür ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 17 StundenWindows 102 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 19 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte16 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...

Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.