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

gelöst Mit welchem Batchbefehl kann ich zwischen Dateien unterscheiden deren Dateinamen mit Buchstaben und Zahlen anfangen?

Mitglied: D3ns007

D3ns007 (Level 1) - Jetzt verbinden

08.02.2011, aktualisiert 13:37 Uhr, 6245 Aufrufe, 19 Kommentare

Mein Problem ist das ich per Batch einige Logfiles ansehen muss. Das Batchprogramm soll unterscheiden zwischen Dateinamen die mit Buchstaben anfangen und Dateinamen die mit Zahlen anfangen. Die Dateinamen die mit Buchstaben anfangen sollen von diesem Ordner in einen anderen kopiert werden.

Ich versuche mich gerade etwas am Batchprogrammieren.
Mein Problem ist das ich zu obiger Frage im Netz leider keine zufriedenstellende Lösung gefunden habe. Hätte jemand einen Befehl zu Hand um da Problem zu lösen?

Ich stelle mir das so vor:

IF Filename==(a-z .*)(
copy files von A nach B)
else(
goto:eof)

Sorry kenne die Batchsyntax nicht so gut... Aber damit Ihr wisst was ich brauche: Hauptaugenmerk dabei sollte der Unterschied zwischen den Dateinamen sein...

Vielen Dank für die Hilfe
Grüße
Mitglied: bastla
08.02.2011 um 13:52 Uhr
Hallo D3ns!007!

Versuch es etwa so (direkt in der CMD-Shell - als Batch mit verdopelten Prozentzeichen):
for /f "delims=" %i in ('dir /b *.log^|findstr /v /b "[0-9]"') do @echo copy "%i" "D:\Zielordner\"
Wegen des "echo" vor dem "copy" wird der Kopierbefehl (zum Testen) nur angezeigt, aber noch nicht ausgeführt ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
08.02.2011 um 13:57 Uhr
Sorry kenne die Batchsyntax nicht so gut...
Die Forumskonventionen aber auch nicht, sonst hätte die Frage mit "Tach" oder "Gruezi" angefangen.

Beispiel am CMD-Prompt
[nur die erste Zeile ist Eingabe, der Rest Ausgabe. Führendes ">" gehört zum Prompt]
>for /f "delims=" %i in ('dir /b ^|findstr /r "^[0-9]"') do @echo copy "%i" X:\WhereEver\"
copy "01000100..txt" X:\WhereEver\"
copy "0byte.txt" X:\WhereEver\"
copy "1.bat" X:\WhereEver\"
copy "132.bat" X:\WhereEver\"
copy "14.bat" X:\WhereEver\"
copy "22mio.txt" X:\WhereEver\"
copy "34.bat" X:\WhereEver\"
Grüße
Biber

[Edit @bastla] Okay, wenn du die Dateien mit Buchstaben kopierst, dann nehm ich die mit Ziffern.... *g [/Ecit]
Bitte warten ..
Mitglied: D3ns007
08.02.2011 um 14:15 Uhr
Hallo Miteinander (so viel zu Forumskonventionen =)
Könntest Du mir evtl. erklären welcher Befehl da was macht?

Damit ich es verstehe und nicht bloß zusammenzimmer bis es geht..

Danke
Grüße
Bitte warten ..
Mitglied: bastla
08.02.2011 um 14:26 Uhr
Hallo D3ns!007!
for /f "delims=" %i in (' ') do
geht alle Ergebniszeilen (= jeweils %i) des/der in der Klammer (und zwischen den Apostrophen) stehenden Befehle/s durch und führt für jede die nach dem "do" stehende/n Aktion/en aus
dir /b *.log^|findstr /v /b "[0-9]"
listet alle Ordnerinhalte (wenn es sicher nur Dateien sein sollen, wäre zusätzlich "/a-d" zu verwenden) mit dem Typ ".log" auf (nur Name und Typ) und filtert dann mit "findstr", wobei wegen des "/v" alle Zeilen übrigbleiben, die nicht dem Filterkriterium entsprechen
@echo copy "%i" "D:\Zielordner\"
no comment ...

Näheres findest Du unter Verwendung der Online-Hilfe, etwa mit "findstr /?" oder sowie ausführlich für "for" im Tutorial_zur_FOR-Schleife.

Grüße
bastla
Bitte warten ..
Mitglied: D3ns007
08.02.2011 um 15:20 Uhr
Danke bastla,
wenn das Programm jetzt vor dem kopieren prüfen soll ob die Dateien schon im Zielordner enthalten sind.
Wie geht das?

Grüße+Danke
D3ns!007
Bitte warten ..
Mitglied: bastla
08.02.2011 um 15:52 Uhr
Hallo D3ns!007!!

"if exist" oder "if not exist" - was eben grad besser passt ...

Grüße
bastla
Bitte warten ..
Mitglied: D3ns007
08.02.2011 um 16:07 Uhr
Mhmm ja ok ist klar.
Aber der soll ja in Ordner A reinschauen und mit den Dateien aus Ordner B vergleichen.
Weißt Du wie das geht?

grüße
Bitte warten ..
Mitglied: bastla
08.02.2011 um 16:32 Uhr
Hallo D3ns!007!!

Gib einfach den Pfad mit an ...

Grüße
bastla

P.S.: Vielleicht beschreibst du einmal den ganzen weiteren Plan ...
Bitte warten ..
Mitglied: D3ns007
09.02.2011 um 08:54 Uhr
Ja ok ich versuchs mal...

Also wir kopieren diese Logfiles von einem Ordner in einen anderen. Bevor die Dateien kopiert werden wäre es nicht schlecht wenn ein Abgleich anhand des Dateinamens zwischen den Ordnern gemacht wird. Falls es ein Log gibt das doppelt vorkommt (Dateinamen) dann möchte ich das Ja nicht überschreiben.

Momentaner Quelltext ist dieser:
01.
@echo off
02.
set "src=\\Test\Source"
03.
set "dst=\\Test\destination"
04.
echo Bitte warten Sie während das Programm die Dateien kopiert...
05.
REM.
06.
color 8F
07.
for /f "delims=" %%i in ('dir /b *.log^|findstr /v /b "[0-9]"') do copy %%i %dst%
08.
echo Nun koennen Sie mit beliebigen Tastendruck das Fenster schließen. Der Copy-Job ist durchgefuehrt.
09.
pause
Wenn das Programm den Vergleich noch hinbekommen würde dann bin ich glücklich =)
Bitte warten ..
Mitglied: bastla
09.02.2011 um 09:10 Uhr
Hallo D3ns!007!!

Etwa so:
01.
@echo off & setlocal
02.
set "src=\\Test\Source"
03.
set "dst=\\Test\destination"
04.
echo Bitte warten Sie während das Programm die Dateien kopiert...
05.
REM.
06.
color 8F
07.
for /f "delims=" %%i in ('dir /b "%src%\*.log"^|findstr /v /b "[0-9]"') do if not exist "%dst%\%%i" copy "%src\%%i" "%dst%\"
08.
echo Nun koennen Sie mit beliebigem Tastendruck das Fenster schliessen. Der Copy-Job ist durchgefuehrt.
09.
pause
Grüße
bastla
Bitte warten ..
Mitglied: D3ns007
09.02.2011 um 10:31 Uhr
Hallo Bastla,
mir ist gerade noch etwas beim testen aufgefallen.

Nach dem Vergleich der Daten soll die Datei trotzdem kompiert werden.
Also im Zielverzeichnis soll Log1.txt und Log1(1).txt stehen.

Ist das möglich? Hast Du eine Idee.

Danke!
Grüße

D3ns!007
Bitte warten ..
Mitglied: bastla
09.02.2011 um 11:13 Uhr
Hallo D3ns!007!

Ungetestet:
01.
@echo off & setlocal
02.
set "src=\\Test\Source"
03.
set "dst=\\Test\destination"
04.
echo Bitte warten Sie während das Programm die Dateien kopiert...
05.
REM.
06.
color 8F
07.
for /f "delims=" %%i in ('dir /b "%src%\*.log"^|findstr /v /b "[0-9]"') do call :ProcessFile "%%i"
08.
echo Nun koennen Sie mit beliebigem Tastendruck das Fenster schliessen. Der Copy-Job ist durchgefuehrt.
09.
pause
10.
goto :eof
11.

12.
:ProcessFile
13.
set /a Nr=0
14.
set "Zusatz="
15.
:Loop
16.
if not exist "%dst%\%~n1%Zusatz%%~x1" goto :CopyIt
17.
    set /a Nr+=1
18.
    set "Zusatz=(%Nr%))"
19.
goto :Loop
20.

21.
:CopyIt
22.
copy "%src%\%~1" "%dst%\%~n1%Zusatz%%~x1"
23.
goto :eof
Das hier verwendete Unterprogramm "ProcessFile" verhält sich wie ein weiterer Batch - daher kommt der beim Aufruf übergebene Dateiname (inkl. Typ) als %1 an und kann entsprechend weiterverarbeitet =aufgeteilt in "%~n1" (=nur Name) und "%~x1" (= nur Typ bzw "extension") werden.

Mit der Zählervariablen %Nr% bzw der daraus erzeugten Variablen %Zusatz% kann dann solange "probiert" werden, bis ein Zusatz gefunden wird, der noch nicht vorhanden ist - im Optimalfall (wenn es die zu kopierende Datei im Zielordner noch nicht gibt) bleibt dabei %Zusatz% leer.

Grüße
bastla

P.S.: Ob "das möglich ist" bzw ich eine "Idee dazu" habe, ergibt sich eigentlich ohnehin aus meiner (im Negativfall nicht gegebenen) Antwort ...

[Edit] Fehlendes Prozentzeichen in Zeile 22 ergänzt [/Edit]
[Edit2] ... und %%i durch %~1 ersetzt [/Edit2]
Bitte warten ..
Mitglied: D3ns007
09.02.2011 um 11:46 Uhr
Bitte warten Sie wõhrend das Programm die Dateien kopiert...
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Nun koennen Sie mit beliebigem Tastendruck das Fenster schliessen. Der Copy-Job ist durchgefuehrt.
Drücken Sie eine beliebige Taste . . .

Das hier sind die Meldungen die mir ausgegeben werden.
Es werden keine Dateien mehr kopiert (auch nicht ersetzt). Bekomme aber keine große Fehlermeldung...

Woran kann das liegen?
Bitte warten ..
Mitglied: Biber
09.02.2011 um 12:25 Uhr
Zitat von D3ns007:
Woran kann das liegen?
Eventuell ein Fehler im Script?
Ergänze doch mal in Zeile 22
copy "%src\%%i" "%dst%\%~n1%Zusatz%%~x1"
...ein Prozentzeichen nach den drei Buchstaben "src"

Kleiner Tipp. Wenn beim Kopieren vom OS die Fehlermeldung "Das System kann die angegebene Datei nicht finden" kommt,
dann dürfte es sich dabei handeln um
[_] die Zieldatei?
[_] die Protokolldatei?
[_] die Batchdatei?
[_] die Quelldatei?
Bitte warten ..
Mitglied: bastla
09.02.2011 um 12:34 Uhr
@Biber

Danke für's Aushelfen

Ich trage das mal oben nach, belasse es aber beim Status "Ungetestet" ...

Grüße
bastla
Bitte warten ..
Mitglied: D3ns007
09.02.2011 um 13:11 Uhr
Hallo,
also ich hab es nochmals durchgespielt und auch das %-Zeichen nachgetragen.
Die Fehlermeldung ist die gleiche....

Grüße
Bitte warten ..
Mitglied: Biber
09.02.2011 um 13:20 Uhr
Moin D3ens!007,
Zitat von D3ns007:
Hallo,
also ich hab es nochmals durchgespielt und auch das %-Zeichen nachgetragen.
Die Fehlermeldung ist die gleiche....
Dann ist im Gegensatz zu vorher diesmal wahrscheinlich die zu kopierende Datei nicht da.
Ersetze doch das "%%i" in der vorhin korrigierten Zeile durch %1.

Kannst du denn nicht Testen, beispielsweise indem du statt des "copy vonirgendwoMitVariablen nachirgenwoMitVariablen"
ein "ECHO copy vonirgendwoMitVariablen nachirgenwoMitVariablen" machst?

Grüße
Biber
Bitte warten ..
Mitglied: bastla
09.02.2011 um 13:22 Uhr
Hallo D3ns!0047!

Ich habe ja auch nicht nur einen Fehler eingebaut ...

Da sich die Zeile nicht mehr in der Schleife befindet, gibt's natürlich auch kein "%%i" mehr - wieder etwas richtiger sollte die Zeile dann so aussehen:
copy "%src%\%~1" "%dst%\%~n1%Zusatz%%~x1"
Grüße
bastla

[Edit] @Biber: Thx again - heute hab ich aber ordentlich Gelegenheit zum Ausbügeln gelassen ... [/Edit]
Bitte warten ..
Mitglied: D3ns007
09.02.2011 um 16:10 Uhr
Hallo Miteinander,
jetzt gehts.

Danke für die Tatkräftige Unterstützung!

Grüße
Der D3ns!007
Bitte warten ..
Ähnliche Inhalte
Peripheriegeräte

USB 3.1 und USB 3.0 Kabel - wo liegt der Unterscheid

Frage von uridium69Peripheriegeräte2 Kommentare

Moin zusammen Ich möchte gerne ein USB 3.1 Kabel verlängern bzw. durch ein längeres ersetzen. Allerdings finde ich keine ...

Batch & Shell

Neueste oder mit höchster fortlaufender Zahl am Dateiende mit gleichem Anfang aus Textdatei kopieren

gelöst Frage von lanazyBatch & Shell2 Kommentare

Hallo zusammen, wir müssen bestimmte Dateien per Script kopieren. Welche Dateien das sind, kommen aus einer Textdatei, die wir ...

LAN, WAN, Wireless

Zukunfstfähiges Heimnetzwerk nach dem Stand der Technik Ende 2018 Anfang 2019

gelöst Frage von IT-AmateurLAN, WAN, Wireless16 Kommentare

Hallo Ihr Administratoren, wie mein Name es schon verrät, bin ich ein IT-Amateur. Ich habe nicht wirklich Ahnung von ...

Datenbanken

MSSQL Text in Zahl umwandeln

gelöst Frage von EricAG3Datenbanken1 Kommentar

Hallo zusammen, folgende Tabelle sei gegeben. Menge 5,5 2,5 - 2,5 Das Feld Menge ist vom varchar. Ich möchte ...

Neue Wissensbeiträge
LAN, WAN, Wireless
Sophos RED50 stürzt ab und ist danach tot
Information von Ex0r2k16 vor 2 TagenLAN, WAN, Wireless3 Kommentare

Hey, nach meinem Thread bin ich durch Zufall auf das hier gestoßen: Also wenn ihr UTMs und RED50's im ...

Windows 10

Microsoft macht Bluetooth absichtlich kaputt: Windows 10 Update blockiert Bluetooth-Verbindungen zu Android

Tipp von 1Werner1 vor 2 TagenWindows 107 Kommentare

Moin, jetzt spinnt MS total , was muss ich da auf Chip.de lesen: Auch im Juni schließt Microsoft im ...

Soziale Netzwerke

Facebook - künftig ohne Account des Bundeslandes Sachsen-Anhalt

Information von VGem-e vor 3 TagenSoziale Netzwerke3 Kommentare

Servus, mal sehen, ob andere öffentliche Einrichtungen folgen wollen/können Gruß

Humor (lol)
Facebook Mailer auf NIX-Spamlist
Information von Henere vor 3 TagenHumor (lol)

Eben aus dem Log meines Postfix gefischt. Recht haben Sie. FB ist SPAM :-) lachende Grüße, Henere

Heiß diskutierte Inhalte
Router & Routing
Synology NAS in anderem Subnetz nicht erreichbar
Frage von Tech1KonniRouter & Routing24 Kommentare

Hallo Leute, ich bin Software-Entwickler und daher auch etwas bewandert in den Grundkenntnissen der Netzwerktechnik. Aktuell habe ich allerdings ...

Netzwerke
Zugriff auf mehrere Clients via RDP
Frage von xXMariusXxNetzwerke11 Kommentare

Moin, ich würde gerne auf mehrere Clients in einem Netzwerk via RDP zugreifen. Gibt es eine elegantere Lösung als ...

Windows 7
RDP funktioniert nur einmal
Frage von Sc0rc3dWindows 710 Kommentare

Hi, ich arbeite mittels Remote Desktop von zu Hause. Manchmal per VPN und manchmal direkt (Portfreigabe 3389 -> 46XXX). ...

Windows Server
Probleme Installation Windows Server 2019
Frage von AK-47.2Windows Server8 Kommentare

Hallo zusammen, ich habe das Problem einen Windows Server 2019 auf ein Testsystem zu bringen. Das Mainboard ist ein ...