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 Pfadangaben aus Datei filtern und für Copy Job verwenden

Mitglied: The-COMP

The-COMP (Level 1) - Jetzt verbinden

03.01.2008, aktualisiert 15.01.2008, 5253 Aufrufe, 24 Kommentare

Guten Tag,
ich bin neu hier, durchforste aber schon seit einiger Zeit euer Forum.

Nun zu meinem Anliegen...
Ich benötige eine Batch-Datei, die Pfadangaben (z.B. "X:\-\Audio\trackb.mp3") aus der Datei "playlist.xxx" von anderen Einträgen (#EXTINF:184,trackb) herausfiltert.
Evtl. ist das "\"-Zeichen dafür hilfreich?

plalist.xxx:
01.
#EXTINF:187,tracka		
02.
E:\Audio\dic1\dic12\tracka.mp3
03.
#EXTINF:184,trackb
04.
X:\-\Audio\trackb.mp3
05.
#EXTINF:189,trackc
06.
D:\Audio\Music\trackc.mp3
Die gefilterten Pfadangaben sollen dann als Quellpfade für einen Copy Job dienen.
*Die Pfadangaben können auch Leerzeichen enthalten!

Bsp:
"E:\Audio\dic1\dic12\tracka.mp3" --kopieren auf--> Datenträger Y:\Music
"X:\-\Audio\trackb.mp3" --kopieren auf--> Datenträger Y:\Music
"D:\Audio\Music\trackc.mp3" --kopieren auf--> Datenträger Y:\Music
... usw

Pfade müssen nicht erhalten werden.
D.h. aus "E:\Audio....\tracka.mp3" wird "Y:\Music\tracka.mp3".

- - - - - - - - - - -

Weniger Priorität hat dieser Fall - Wäre aber trotzdem sehr nett wenn ich auch hier Hilfe erhalten würde.

Die Playlist.xxx sollte in das Format der Playlist.yyy "konvertiert" werden.

plalist.xxx:
01.
#EXTINF:187,tracka		
02.
E:\Audio\Music\genreY\tracka.mp3
03.
#EXTINF:184,trackb
04.
X:\01\trackb.mp3
Playlist.yyy:
01.
		<MUSICFOLDERS>
02.
			<MUSICFOLDER DIR="" />
03.
		</MUSICFOLDERS>
04.
		<ENTRY TITLE="" TYPE="1">
05.
			<LOCATION DIR="/Audio/Music/genrey/" FILE="tracka.mp3" VOLUME="E:" />
06.
			<EXTDATA />
07.
		</ENTRY>
08.
		<ENTRY TITLE="" TYPE="1">
09.
			<LOCATION DIR="/01" FILE="trackb.mp3" VOLUME="X:" />
10.
			<EXTDATA />
11.
		</ENTRY>
12.
		...  usw


- - - - - - - - - - -

Nicht das es falsch rüber kommt. Ich habe schon selbst einige Zeit rumprobiert und mir diverse Threads durchgelesen aber ich kam nicht auf die für euch (Batchspezialisten) wahrsch. sehr einfache Lösung.
Also ich bedanke mich schon mal im Vorraus und hoffe auf so kompetente Problemlösungen wie ich sie immer vom Biber lese.

Schönen Abend noch!
Boris
Mitglied: bastla
03.01.2008 um 18:25 Uhr
Hallo The-COMP und willkommen im Forum!

Falls Du auch mit mir vorlieb nehmen möchtest, könnte ich Dir für die Aufgabe 1 einen Oneliner anbieten:
01.
@for /f "delims=" %i in ('findstr "\\" Playlist.xxx') do @copy "%i" Y:\Music\ >nul
Für den Einsatz in einer Batchdatei müsstest Du jeweils %%i schreiben und berücksichtigen, dass der "copy"-Befehl dann kommentarlos schon im Zielordner enthaltene gleichnamige Dateien überschreiben würde.

Falls Du erst einmal testen willst:
01.
@for /f "delims=" %i in ('findstr "\\" Playlist.xxx') do @echo copy "%i" Y:\Music\
Damit werden die Kopierbefehle nur angezeigt, aber noch nicht ausgeführt.

Grüße
bastla
Bitte warten ..
Mitglied: The-COMP
03.01.2008 um 18:36 Uhr
Natürlich!
Du hast mir genauso geholfen. Es funktioniert und ist genau das was ich mir vorerst mal vorgestellt habe.
Wäre es möglich die alte Playlist mit neuen Pfadangaben auf auf Y: zu kopieren und evtl. eine If exist Schleife zu integrieren um nicht unnötig Daten zu überschreiben?

Könntest du mir noch die Phrase: "@for /f "delims=" %i in ('findstr "\\" Playlist.xxx')" kommentieren. Ich möchte ja nicht dumm sterben.

Wie schwer ist mein 2. Anliegen umzusetzen?

P.S. Herzlichen Dank!
Bitte warten ..
Mitglied: bastla
03.01.2008 um 18:47 Uhr
Hallo The-COMP!

... eine If exist Schleife zu integrieren um nicht unnötig Daten zu überschreiben?
Eine "if exist"-Abfrage ist grundsätzlich nicht nötig, wenn Du direkt von der Kommandozeile arbeitest, da in diesem Fall der "copy"-Befehl vor dem Überschreiben eine Bestätigung verlangt. Ansonsten:
01.
@for /f "delims=" %i in ('findstr "\\" Playlist.xxx') do @if not exist "Y:\Music\%~nxi" @copy "%i" Y:\Music\ >nul
01.
@for /f "delims=" %i in ('findstr "\\" Playlist.xxx')
bedeutet:

Durchsuche die Datei "Playlist.xxx" nach Zeilen, welche "\" enthalten (die Verdoppelung ist notwendig, da ein einfacher "\" für "findstr" als Hinweis gilt, dass das nächste Zeichen nicht interpretiert werden soll) und stelle jede dieser Zeilen als "%i" für die weitere Verarbeitung (nach dem "do") zur Verfügung.

Damit ev im Pfad enthaltene Leerzeichen (als Standardtrennzeichen der "for /f"-Anweisung) die Zeile nicht zerteilen können, wird mit "delims=" festgelegt, dass es überhaupt keine Trennzeichen geben, sondern die Zeile als Einheit verwendet werden soll.

Grüße
bastla
Bitte warten ..
Mitglied: miniversum
03.01.2008 um 18:50 Uhr
Den Zweiten Fall würde ich so lösen:
@echo off
set "PlIn=Plaxlist.xxx"
set "PlOut=Plaxlist.yyy"

echo ^<MUSICFOLDERS^>>"%PlOut%"
echo ^<MUSICFOLDER DIR="" /^>>>"%PlOut%"
echo ^</MUSICFOLDERS^>>>"%PlOut%"

for /f "delims=" %%i in ('findstr /V "^#" "%PlIn%"') do (
echo ^<ENTRY TITLE="" TYPE="1"^>>>"%PlOut%"
echo ^<LOCATION DIR="%%~pi" FILE="%%~nxi" VOLUME="%%~di" /^>>>"%PlOut%"
echo ^<EXTDATA /^>>>"%PlOut%"
echo ^</ENTRY^>>>"%PlOut%"
)

miniversum

EDIT: PlOut-Problem Korrigiert
EDIT2: Fehlermeldungsproblem behoben
Bitte warten ..
Mitglied: miniversum
03.01.2008 um 19:07 Uhr
@bastla
Wäre bei einer solchen Playlist nicht eher ein
for /f "delims=" %i in ('findstr /V "^#" Playlist.xxx')
statt einem
for /f "delims=" %i in ('findstr "\\" Playlist.xxx')
besser geeignet, da ja der "echte" Name des Liedes auch ein "\" enthalten könnte und es so bei einer Zeile ala
#EXTINF:187,track\a
(wobei "track\a" Tatsächlich ein Name eines Liedes sein könnte) zu Problemen kommen könnte. Auf der anderen Seite werden je nach Programm und Einstellungen diese Playlisten auch so erzeugt das nicht umbedingt ein Verzeichniss vor dem Dateinamen steht. Dies passiert z.B. wenn die Playlist im gleichen Verzeichnis wie die enthaltenen Dateien gespeichert ist.
In dem Fall wäre eine Suche nach "\" auch erfolglos, da ein Dateiname ja kein "\" enthalten darf.

miniversum
Bitte warten ..
Mitglied: The-COMP
03.01.2008 um 19:24 Uhr
Das mit der If Schleife funktioniert nicht. Meldung: "Die folgende Verwendung des Pfadopeators...." (Meldung taucht nur eine ms auf).

Kann ein Counter integriert werden der die Kopiervorgänge zählt und sie zu einer Log hinzufügt àla "echo %date% - %time%: Es wurden %var% Dateien kopiert. >>Log.log


@miniversum
Dein Verbesserungsvorschlag funktioniert. Erklärst du mir bitte noch was sich da geändert hat.
Wenn ich versuch die Playlist "playlist.xxx" zu konvertieren erhalte ich die Datei "PlOut" mit folgendem Inhalt:

01.
<MUSICFOLDERS>
02.
<MUSICFOLDER DIR="" />
03.
</MUSICFOLDERS>
Bitte warten ..
Mitglied: miniversum
03.01.2008 um 19:37 Uhr
Warum die Fehlermeldung kommt kann ich hier bei mir nicht nachvollziehen. Das Problem mit dem PlOut kann ich grade oben korrigiert.
Der untershcied ist das bei bastlas Lösung alle Zeilen die ein "\" enthalten eingelesen werden. Bei meiner werden aber alle Zeilen AUßER denen die am Anfang ein "#" eingelesen.

miniversum

EDIT: Fehler gefunden und oben korrigiert
Bitte warten ..
Mitglied: Biber
03.01.2008 um 19:45 Uhr
Moin The-COMP, bastla und miniversum,

nur kurzer Zwischenruf:
Ersetze: for /f "delims=" %i
Durch: for /f "delims=" %%i

Dann klappts besser.

Grüße
Biber
Bitte warten ..
Mitglied: The-COMP
03.01.2008 um 19:53 Uhr
Danke für den Hinweis. Daran hab ich schon gedacht

@miniversum
Werden bei deiner Lösung nur Zeilen ausgeschlossen die ein "#" am Anfang haben.
Die Playlist kann je nach verwendetem Programm noch einen Header mit versch. Informationen beinhalten, welche auch nicht berücksichtigt werden soll. Verzeih mir wenn ich mich irre.

-
Die Datei wird zwar nun richtig unbenannt der Inhalt bleibt jedoch der selbe. Funktionierts bei dir?

@all
Die Hauptaufgabe wird soweit schon richtig ausgeführt. Die If Schleife funktioniert nur nicht.
Bitte warten ..
Mitglied: miniversum
03.01.2008 um 20:16 Uhr
Ja es werden nur dateien mit einem # am anfang ausgeschlossen.
Ich habe es bei mir mit einer m3u-Playlist gestestet die Winamp so erstellt:
#EXTM3U
#EXTINF:317,KMFDM - Looking For Strange
D:\Musik\KMFDM - Looking For Strange.mp3
#EXTINF:327,SITD - Kreuzgang (Bestie Mensch Remix by Painbastard)
D:\Musik\SITD - Kreuzgang (Bestie Mensch remix by painbastard).mp3
#EXTINF:290,Agonoize - Koprolalie
D:\Musik\Agonoize - Koprolalie.mp3

miniversum
Bitte warten ..
Mitglied: bastla
03.01.2008 um 20:45 Uhr
Hallo The-COMP!

Die If-Abfrage würde in Batch (unter Verwendung der sicher besser geeigneten Filterung lt miniversum's Vorschlag) so aussehen:
01.
for /f "delims=" %%i in ('findstr /v "^#" Playlist.xxx') do if not exist "Y:\Music\%%~nxi" copy "%%i" Y:\Music\ >nul
Grüße
bastla
Bitte warten ..
Mitglied: The-COMP
04.01.2008 um 03:05 Uhr
Danke für eure Bemühungen!
@ bastla:
Kann ich in dem Code Snippet eine Pfadvariable verwenden?
Das ist dann interessant, wenn ich via Eingabeaufforderung einen Laufwerksbuchstaben zuweise.
Was muss ich machen damit die Batchdatei auch mit Leerzeichen in der Pfadangabe funktioniert?
Bei "C:\Dokumente und Einstellungen" streikt sie...
Bitte warten ..
Mitglied: bastla
04.01.2008 um 10:33 Uhr
Hallo The-COMP!

Kann ich in dem Code Snippet eine Pfadvariable verwenden?
Da ich den aktuellen Stand Deiner Batchdatei nicht kenne, ganz allgemein etwa so:
01.
@echo off & setlocal
02.
set "Target=Y:\Music"
03.
set "PlIn=C:\Dokumente und Einstellungen\Username\Eigene Dateien\Eigene Musik\Whatever\Playlist.xxx"
04.
set "PlOut=%Target%\Playlist.yyy"
05.

06.
for /f "delims=" %%i in ('findstr /v "^#" "%PlIn%"') do if not exist "%Target%\%%~nxi" copy "%%i" "%Target%\" >nul
07.

08.
...
Anstelle von "C:\Dokumente und Einstellungen\Username" kannst Du auch "%userprofile%" verwenden.

Was muss ich machen damit die Batchdatei auch mit Leerzeichen in der Pfadangabe funktioniert?
Genügend Anführungszeichen setzen (auch bei der Angabe der Playlist-Datei).

Grüße
bastla
Bitte warten ..
Mitglied: The-COMP
04.01.2008 um 16:45 Uhr
Danke hat mir schon weitergeholfen.
Wie schaff ich es, dass anstatt "1 Datei(en) kopiert.", "E:\Liedabc.mp3" kopiert." steht.
Bzw. was noch wichtiger ist und auch mehr Sinn macht: "Das System kann "E:\Liedabc.mp3" nicht finden".

Eine Playlist ist nicht immer so aktuell wie die Ordnerstruktur...

*Denke ich weiss schon wie.. einfach via Echo Befehl. Wie kann ich "UND" Verknüpfungen bzw. Bedingungen machen?

Übrigens.. Ihr seit super! Danke für eure (kostenlose) persönliche u. kompentente Hilfe!
Bitte warten ..
Mitglied: Biber
04.01.2008 um 16:54 Uhr
Moin The-COMP,

da Du die Feinheiten der Konversation in diesem Forum noch nicht kennst (no prob), zitiere ich nochmal bastla:

Da ich den aktuellen Stand Deiner Batchdatei nicht kenne, ganz allgemein etwa so:

Merkst Du den feinen Unterton...?
Bitte poste Deinen Code-Stand, denn bei den geposteten Varianten dürfte wegen ">nul" gar keine "..kopiert"-Meldung erscheinen.

Grüße
Biber
Bitte warten ..
Mitglied: The-COMP
04.01.2008 um 17:04 Uhr
Hey Biber,
sorry das hab ich glatt überlesen. Ich bin grad ein wenig im Stress und nicht an meinem PC!

Wenn ich ">nul" wegmache und den echo-Befehl funktioniert die Sache schon.
Mein Stand ist nicht viel weiter als der im Forum, da ich mich erst mal nur um das exportieren der Tracks gekümmert hab. Das andere ist momentan nicht wichtig.

Mir fiehl mit Hilfe des echo-Befehls auf dass Dateien mit Umlauten (ö.ä,..) nicht kopiert wurden.
Ist jetzt erstmal nicht weiter schlimm, aber wenn ihr eine Lösung kennt dann könnt ihr sie ja posten.

Wie schaff ich es dass die Anordnung der alten Liste erhalten bleibt und nur die neuen Pfadangaben besitzt. (Erst wollte ich einfach mit den kopierten Tracks ne neue Liste erzeugen, aber da dachte ich nicht an die Reihenfolge)
Bitte warten ..
Mitglied: miniversum
05.01.2008 um 10:36 Uhr
Um auch Dateien mit Umlauten kopieren zu können muss die Codepage auf Deutsch umgeschaltet werden.
Das wird erreicht indem am Anfang der Batch Datei die Zeile
chcp 1252 >NUL
eingefügt wird. Allerdings funktioniert die Anzeige auf dem Bildschirm nicht so ganz. Da müßte also immer umgeschatet werden dann wenn man darauf wert legt.

PS: Hab ne ähnliche Batch hier die allerdings das Verzeichnis selbst anlegt indas kopiert wird und noch ein Paar andere Dinge kann. Vielleicht poste ich sie mal noch wenn ich sie grade finde und bedarf besteht.
Bitte warten ..
Mitglied: bastla
05.01.2008 um 15:36 Uhr
Hallo The-COMP!

Wie schaff ich es dass die Anordnung der alten Liste erhalten bleibt und nur die neuen Pfadangaben besitzt.
Dazu wäre die bisherige Strategie zu überdenken und eher so vorzugehen:

Originalplaylist (unter Berücksichtigung des Headers) auslesen und am Zielort neu erstellen - dazu nur für erfolgreich kopierte Titel die entsprechenden beiden Zeilen eintragen (wobei als "Pfad" nur der Dateiname benötigt wird, da sowohl Playlist als auch die zugehörigen Musikdateien im selben Ordner liegen).

Anschließend auf Basis der neuen Playlist die alternative "Playlist.yyy" (ebenfalls am Zielort) erstellen.

Bis miniversum seine "Luxusvariante" postet, als Versuch einer Umsetzung:
01.
@echo off & setlocal
02.

03.
set "Target=Y:\Music"
04.
::Default für Playlist
05.
set "PlIn=C:\Dokumente und Einstellungen\Username\Eigene Dateien\Eigene Musik\Whatever\Playlist.xxx"
06.
set "PlOutExt=.yyy"
07.
set "HeaderM3U=#EXTM3U"
08.

09.
::Falls Playlist als Argument übergeben wurde, diese(s) verwenden
10.
if not [%1]==[] set "PlIn=%~1"
11.

12.
if not exist "%PlIn%" echo Playlist "%PlIn%" nicht gefunden! & goto :eof
13.

14.
::Einzeiligen Header einlesen
15.
set /p Header=<"%PlIn%"
16.
::Kontrolle Playlistformat - kann natürlich auch unterbleiben
17.
if not "%Header%"=="%HeaderM3U%" echo Playlist-Format nicht OK! & goto :eof
18.

19.
::Codepage umstellen (aktuelle CP zwischenspeichern)
20.
for /f "tokens=2 delims=:." %%i in ('chcp') do set "CP=%%i"
21.
chcp 1252>nul
22.

23.
::Bei Bedarf Zielordner erzeugen
24.
if not exist "%Target%" md "%Target%"
25.

26.
::Pfad für neue Playlist (Dateiname und -typ bleiben gleich) festlegen ...
27.
for %%i in ("%PlIn%") do set "PlNew=%Target%\%%~nxi"
28.

29.
::... und Header in neue Playlist schreiben
30.
echo %Header%>"%PlNew%"
31.

32.
::Ausgangs-Playlist ab Zeile 2 (also nach dem Header) auslesen und verarbeiten
33.
for /f "usebackq skip=1 delims=" %%i in ("%PlIn%") do set "Line=%%i" & call :ProcessLine "%%i"
34.

35.
::Alternative Playlist erzeugen
36.
call :MakePlaylist_yyy
37.

38.
::Codepage wieder auf ursprünglichen Wert setzen
39.
chcp %CP%>nul
40.

41.
::Hauptprogramm Ende
42.
goto :eof
43.

44.

45.
:ProcessLine
46.
::Wenn Zeile nicht mit "#" beginnt, muss es ein Dateipfad sein
47.
if not %Line:~0,1%==# goto :CopyIt
48.
::"#"-Zeile zwischenspeichern (Ausgabe in neue Playlist erst nach erfolgreicher Kopie der Musikdatei)
49.
set "Info=%Line%"
50.
goto :eof
51.

52.
:CopyIt
53.
::Ist die zu kopierende Musikdatei vorhanden?
54.
if not exist %1 echo %1 nicht gefunden! & goto :eof
55.

56.
::Ist die zu kopierende Musikdatei bereits im Zielordner vorhanden?
57.
if exist "%Target%\%~nx1" echo %1 bereits in "%Target%" vorhanden - nicht kopiert! & goto :eof
58.

59.
::Kopie durchführen und, wenn kein Fehler gemeldet wird, weiter zum Schreiben des Playlist-Eintrages
60.
copy %1 "%Target%\%~nx1" >nul 2>nul && goto :CopyOK
61.
echo %1 konnte nicht kopiert werden! & goto :eof
62.

63.
:CopyOK
64.
::Eintrag in neue Playlist; da im Zielverzeichnis "flat" erstellt, als "Pfad" nur Dateiname
65.
(echo %Info%)>>"%PlNew%"
66.
(echo %~nx1)>>"%PlNew%"
67.
goto :eof
68.

69.
:MakePlaylist_yyy
70.
::Pfad und Dateiname (mit Typ %PlOutExt%) der alternativen Playlist festlegen
71.
for %%i in ("%PlNew%") do set "PlOut=%%~dpni%PlOutExt%"
72.

73.
echo ^<MUSICFOLDERS^>>"%PlOut%"
74.
echo ^<MUSICFOLDER DIR="" /^>>>"%PlOut%"
75.
echo ^</MUSICFOLDERS^>>>"%PlOut%"
76.

77.
::Daten aus neuer Playlist verwenden
78.
for /f "delims=" %%i in ('findstr /V "^#" "%PlNew%"') do (
79.
    echo ^<ENTRY TITLE="" TYPE="1"^>>>"%PlOut%"
80.
    echo ^<LOCATION DIR="%%~pi" FILE="%%~nxi" VOLUME="%%~di" /^>>>"%PlOut%"
81.
    echo ^<EXTDATA /^>>>"%PlOut%"
82.
    echo ^</ENTRY^>>>"%PlOut%"
83.
)
84.
goto :eof
Die Batchdatei ist in dieser Fassung für die Verwendung von der Kommandozeile aus gedacht, da die Fehlermeldungen per "echo" ausgegeben werden (wobei diese natürlich auch mit einem Aufruf der Art
01.
CopyMusic.cmd > D:\CopyMusicLog.txt
in eine Textdatei umgeleitet werden können).

Soll nicht die in der entsprechenden "set"-Zeile festgelegte Default-Playlistendatei verwendet werden, kann der Batch auch so aufgerufen werden:
01.
CopyMusic.cmd "D:\Andere Playlist.m3u"
Zur Erstellung der ".yyy"-Playlist wird im entsprechenden Unterprogramm miniversum's Code verwendet - verändert wurde nur die Quelle (= neu erstellte Playlist im Zielordner).

Getestet ist der Batch nur oberflächlich ...

Grüße
bastla
Bitte warten ..
Mitglied: miniversum
05.01.2008 um 16:40 Uhr
Ja ich habs jetzt auch endlich gefunden das Ding.
Ich sollte mal Dringend auf meinem Rechner aufräumen.
Das mit ner zusätzlichen Playlist die neu erstellt wird hab ich allerdings nicht. Hir werden die Dateien Kopiert und mit einer Führenden Nummer versehen damit die Reihenfolge erhalten bleibt. Aber vielleicht hilft es trotzdem etwas:
01.
@echo off 
02.
set nrlen=3
03.

04.
chcp 1252 >NUL
05.
set "nrvorl="
06.
set i=0
07.
:dazu
08.
set nrvorl=%nrvorl%0
09.
set /a i=%i%+1
10.
if %i% lss %nrlen% goto:dazu
11.

12.
set name="%~1"
13.

14.
if [%name%]==[""] set /p name=Name der Playlist:
15.
for /F "delims=" %%a in ('dir /b /a-D %name%') do (
16.
set "filename=%%~na"
17.
set "playlistpath=%%~dpa"
18.
if ["%~1"]==[""] (set fullname="%%~fa" & set playlisttype=%%~xa) else (set fullname="%~1" & set "playlistpath=%~dp1" & set playlisttype=%~x1)
19.
)
20.
set playlistpath=%playlistpath:~0,-1%
21.

22.
set "pfad=%playlistpath%\%filename%"
23.
set nummer=1
24.
if /i not exist "%pfad%\NUL" md "%pfad%" 2>NUL
25.
echo Dateien aus der Playlist werden kopiert:
26.
echo.
27.
REM aalte zeile: FOR /F "eol=# tokens=1 delims=" %%A in ('type %fullname%') do call:nrkopier "%%A"
28.

29.
echo Playlisttyp: %playlisttype:~1%
30.
if /i "%playlisttype%" equ ".m3u" ((for /f "delims=" %%A in ('findstr /V "^#EXT" %fullname%') do call:nrkopier "%%A") & goto:copyok)
31.
if /i "%playlisttype%" equ ".pls" ((for /f "tokens=2* delims==" %%A in ('findstr "^File" %fullname%') do call:nrkopier "%%A") & goto:copyok)
32.
echo Unbekannter Playlisttyp
33.

34.
:copyok
35.
echo.
36.
chcp 850 >NUL
37.
pause
38.
goto:eof
39.

40.
:nrkopier
41.
set anummer=%nrvorl%%nummer%
42.
call set anummer=%%anummer:~-%nrlen%%%
43.
chcp 850 >NUL
44.
echo %anummer%: "%~n1"
45.
chcp 1252 >NUL
46.
copy "%~1" "%pfad%\%anummer% %~nx1" /Y >NUL||(copy "%playlistpath%\%~1" "%pfad%\%anummer% %~nx1" /Y >NUL||(echo Fehler beim Kopieren && Pause))
47.
set /a nummer=%nummer%+1
48.
goto:eof
Bitte warten ..
Mitglied: Madej1
09.01.2008 um 08:13 Uhr
Guten Morgen,

hab eine frage krieg des mal wieder net gebacken....
also zu dem Befehl der liest sich die quellenselber raus und ziele aus

for /f "delims=" %%i in ('findstr "\\" Quellpfade.ini') do (
for /f "delims=" %%a in ('findstr "\\" Zielpfade.ini') do (
@echo robocopy "%%i" "%%a"
))

bloss es als ergebgnis passiert sowas:

robocopy "C:\*\Dateien\1" "C:\*\sicherung\s1"
robocopy "C:\*\Dateien\1" "C:\*\sicherung\s2"
robocopy "C:\*\Dateien\1" "C:\*\sicherung\s3"
robocopy "C:\*\Dateien\1" "C:\*\sicherung\s4"
robocopy "C:\*\Dateien\1" "C:\*\sicherung\s5"
robocopy "C:\*\Dateien\2" "C:\*\sicherung\s1"
robocopy "C:\*\Dateien\2" "C:\*\sicherung\s2"
robocopy "C:\*\Dateien\2" "C:\*\sicherung\s3"
robocopy "C:\*\Dateien\2" "C:\*\sicherung\s4"
robocopy "C:\*\Dateien\2" "C:\*\sicherung\s5"
.
.
.

aber möchte das nur sowas geamcht wird :

robocopy "C:\*\Dateien\1" "C:\*\sicherung\s1"
robocopy "C:\*\Dateien\2" "C:\*\sicherung\s2"
robocopy "C:\*\Dateien\3" "C:\*\sicherung\s3"
robocopy "C:\*\Dateien\4" "C:\*\sicherung\s4"
robocopy "C:\*\Dateien\5" "C:\*\sicherung\s5"

Kann man es so mit der möglichkeit machen, falls ja über antworten würde ich mich sehr freuen

Gruß Madej1
Bitte warten ..
Mitglied: bastla
09.01.2008 um 13:55 Uhr
Hallo Madej1!

Auch wenn die Überschrift eine gewisse Verwandtschaft zu Deinem Problem vermuten ließe, wäre dennoch ein eigener Beitrag angebracht.

Auf dem Weg dort hin könntest Du Dir folgendes überlegen (und im neuen Thread ggf begründen): Wenn es offenbar zusammengehörige Quell- und Zielpfade gibt, wozu dann 2 verschiedene .ini-Dateien?

Wenn Du keinen guten Grund für 2 .ini-Dateien hast, schreibe einfach jeweils einen Quell- und einen Zielpfad (durch ";" getrennt) in die einzelnen Zeilen einer neuen "Pfade.ini" und versuch es so:
01.
for /f "tokens=1,2 delims=;" %%i in (Pfade.ini) do @echo robocopy "%%i" "%%j"
Grüße
bastla
Bitte warten ..
Mitglied: Madej1
09.01.2008 um 14:57 Uhr
Hey danke so klappt es auch ich denk mal das es so wie du es vorgeschlagen hast auch reicht

Vielen dank

wollt keine neuen Beitrag machen, hab dacht das problem löst sich schnell, was es auch dank dir hat

grüße

Madej1
Bitte warten ..
Mitglied: Biber
13.01.2008 um 19:17 Uhr
Nachfrage @The-COMP,

besteht hier weiterer Klärungs/Verfeinerungsbedarf oder kann ich den Thread guten Gewissens schließen?

Grüße
Biber
Bitte warten ..
Mitglied: The-COMP
15.01.2008 um 19:05 Uhr
Der Thread kann guten Gewissens geschlossen werden.
Danke an alle Beteiligten!
Bitte warten ..
Ähnliche Inhalte
Windows Server
Copy-VMFile
gelöst Frage von IT-twakWindows Server6 Kommentare

Hey, ich sitze jetzt an einem *.ps1 Script und würde gern folgendes realisieren: eine Datei von meinem Host auf ...

Backup
Veeam Backup Copy
gelöst Frage von SFischer-SCTBackup3 Kommentare

Hallo, ich habe hier ein kleines Problem mit der aktuellen Veeam Backup & Replication 8 Und zwar haben wir ...

Backup
Veeam Backup Job
Frage von adrian138Backup3 Kommentare

Veeam Backup & Replication v9.5 Hallo, Gerne möchte ich folgenden Backupjob einrichten: Daily Mo - Fr Inkrementell - Aufbewahrung 1 Woche Weekly jeden ...

Windows Installation

Windows 10 - Default user profil - unattended Datei "copy profile" Fehler

Frage von jester84Windows Installation2 Kommentare

Hallo zusammen, ich habe ein Windows 10 (Ver. 1803) Image mit Sysprep zur Installaton über den WDS vorbereitet. Im ...

Neue Wissensbeiträge
Windows Mobile

Support für Windows Mobile endet im Dezember 2019

Information von transocean vor 17 StundenWindows Mobile

Moin, Microsoft empfiehlt als Alternative den Umstieg auf iOS oder Android, wie man hier lesen kann. Gruß Uwe

Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 2 TagenInternet5 Kommentare

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zugleich. Da werden aus Gerüchten plötzlich Fakten, da ...

Windows 10

Netzwerk-Bug in allen Windows 10-Versionen durch Januar 2019-Updates

Information von kgborn vor 2 TagenWindows 101 Kommentar

Nur ein kurzer Hinweis für Admins, die Windows 10-Clients im Portfolio haben. Mit den Updates vom 8. Januar 2019 ...

Windows 10

Windows 10 V1809: Rollout ist gestartet - kommt per Windows Update

Information von kgborn vor 3 TagenWindows 102 Kommentare

Eine kurze Information für die Admins, die Windows 10 im Programm haben. Microsoft hat die letzte Baustelle (die Inkompatibilität ...

Heiß diskutierte Inhalte
TK-Netze & Geräte
TAPI auf einem Win2016Server installieren und einrichten
Frage von wstabelTK-Netze & Geräte32 Kommentare

Hallo liebe Admins, ich habe folgende Situation: 1 Windows Server 2016 Standard als DC 1 SNOM 710 IP-Telefon 1 ...

Off Topic
Darf ich ein Forum erstellen das Produkte eines Herstellers betrifft?
Frage von cyberwallOff Topic9 Kommentare

Hallo Community, ich habe da eine "rechtliche" bzw. allgemeine Frage zum erstellen von Foren. Darf ich als "normale Person" ...

DNS
SFTP über DynDNS nicht OK - über ext. IP funktioniert es
Frage von C.MorgensternDNS8 Kommentare

Hallo zusammen! Ich habe Probleme beim SFTP Zugriff auf eine Linux Maschine vom WAN aus über eine DynDNS Adresse. ...

Router & Routing
Unbekannte IPv4 Adresse im Routerprotokoll(Portweiterleitung)
gelöst Frage von tklustigRouter & Routing7 Kommentare

Hallo Leute, folgender Screenshot(ScanVersusPortForwarding.jpg) zeigt die im Routerprotokoll aufgezeigten Portweiterleitungen und alle von einem IPScanner eruierten IPv4 Adressen in ...