Dateiname mit Pfad erweitern (mittels Batch Verarbeitung ?)
schade niemandem
Allen einen guten Abend!
privat habe ich etwa 600 GB Daten in tief verschachtelten Strukturen abgelegt.
Das Problem: Die Daten liegen auf
- mehreren Rechnern
- mehreren Speicherorten (lokale externe Festplatten, Festplatten auf verschiednenen Rechnern, Netz).
Es wird immer schwieriger, die Übersicht zu behalten.
Meine Frage:
Wie könnte ich alle Dateinamen mit ihrem Speicherort (Laufwerk, Pfad) erweitern ?
Die Idee "dahinter":
- alle Dateien dann an einem Ort zentrieren
- alle mehrfach vorhandenen Dateien löschen
- dann in eine geeignete Filestruktur überführen
Vielen Dank
Helmut
Allen einen guten Abend!
privat habe ich etwa 600 GB Daten in tief verschachtelten Strukturen abgelegt.
Das Problem: Die Daten liegen auf
- mehreren Rechnern
- mehreren Speicherorten (lokale externe Festplatten, Festplatten auf verschiednenen Rechnern, Netz).
Es wird immer schwieriger, die Übersicht zu behalten.
Meine Frage:
Wie könnte ich alle Dateinamen mit ihrem Speicherort (Laufwerk, Pfad) erweitern ?
Die Idee "dahinter":
- alle Dateien dann an einem Ort zentrieren
- alle mehrfach vorhandenen Dateien löschen
- dann in eine geeignete Filestruktur überführen
Vielen Dank
Helmut
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 172183
Url: https://administrator.de/forum/dateiname-mit-pfad-erweitern-mittels-batch-verarbeitung-172183.html
Ausgedruckt am: 19.04.2025 um 17:04 Uhr
25 Kommentare
Neuester Kommentar
Hallo,
Hier mal einen Tipp(Hab grad keine Zeit für einen vollständigen Code):
Das gibt dir alle Dateien mit Pfaden aus. Die Pfade sind so bearbeitet, dass sie sich als Dateinamen verwenden lassen sollten.
MfG,
Mathe172
Hier mal einen Tipp(Hab grad keine Zeit für einen vollständigen Code):
for /r "C:" %%A in (*.*) do (set "Datei=%%A" & call set "Datei=%%Datei:\=_%%" & call echo.%%Datei::=#%%)
MfG,
Mathe172
... allerdings wäre es ratsam, anstelle der Ersatzzeichen "_" (für "\") und "#" (für ":") etwas exotischere Varianten (wie zB ASCII 186 für "\" und ASCII 246 für ":"; sollten möglichst in den Dateinamen / Pfaden überhaupt nicht vorkommen) zu verwenden - damit ließe sich der Vorgang dann auch wieder korrekt umkehren.
Außerdem könnte es vielleicht auch schon genügen, den Vorgang auf die Ordnernamen zu beschränken ...
Grüße
bastla
Außerdem könnte es vielleicht auch schon genügen, den Vorgang auf die Ordnernamen zu beschränken ...
Grüße
bastla

Hi,
vielleicht fangen wir erst einmal mit der Nennung des Betriebssystems an, bevor hier irgendwelche Vorschläge gepostet werden.
Nicht uninteressant wäre auch, um wieviel Partitionen es sich insgesamt handelt und ob die gleichzeitig im Zugriff sein können.
vielleicht fangen wir erst einmal mit der Nennung des Betriebssystems an, bevor hier irgendwelche Vorschläge gepostet werden.
Nicht uninteressant wäre auch, um wieviel Partitionen es sich insgesamt handelt und ob die gleichzeitig im Zugriff sein können.
Zitat von @Helmut007:
Die Idee "dahinter":
- alle Dateien dann an einem Ort zentrieren
- alle mehrfach vorhandenen Dateien löschen
- dann in eine geeignete Filestruktur überführen
Die Idee "dahinter":
- alle Dateien dann an einem Ort zentrieren
- alle mehrfach vorhandenen Dateien löschen
- dann in eine geeignete Filestruktur überführen
Aloha,
doppelte löschen und neue Struktur anlegen ... und dafür erst alles umlagern, umbenennen, dann erst löschen, dann wieder umbenennen und in eine neu definierte Struktur (Neues Laufwerk, alte Pfade oder wie? Die geeignete Filestruktur will gleich mit durchdacht sein) auslagern?
Also ich weiß ja nicht ... wäre mir prozesstechnisch banane aber mag jeder anders
greetz André
P.S.: mehreren Speicherorten (lokale externe Festplatten, Festplatten auf verschiednenen Rechnern, Netz) aber alles gemappte Laufwerke oder auch UNC-Pfade, sind alle gleichzeitig zugreifbar oder abwechselnd => kann Laufwerk / Pfad theoretisch doppelt vorkommen?

Hi,
mein Vorschlag wäre, erst einmal eine Liste für jede Partition anzulegen, die sich dann auch nach gewünschten Kriterien (z. B. mit SORT) sortieren ließe. Dazu habe ich die Variable "Space" verwendet, um bestimmte Spalten auf eine feste Länge zu bringen.
Nur teilweise getestet, nur als Ansatz zu verstehen.
Wenn alles so läuft, wie du dir das vorstellst, kannst du in Zeile 01 ECHO auf off setzen und unten überflüssige Echos entfernen.
Die entstandenen Logfiles kannst du dann zusammenfügen und auf Duplikate durchsuchen. Aber das wäre dann eine andere Baustelle.
Gruß
Edit:"delims=" eingefügt
mein Vorschlag wäre, erst einmal eine Liste für jede Partition anzulegen, die sich dann auch nach gewünschten Kriterien (z. B. mit SORT) sortieren ließe. Dazu habe ich die Variable "Space" verwendet, um bestimmte Spalten auf eine feste Länge zu bringen.
@echo on & setlocal
set /p "LW=Laufwerksbuchstaben eingeben: "
set LW=%LW:~0,1%:\
@echo [%LW%]
set /p "VLabel=Partitionsbezeichnung eingeben: "
set "space= "
Set "Log=%temp%\%VLABEL%.txt"
del %Log% 2>&1>NUL
set VLabel=%VLABEL%%Space%
set FLabel=%VLabel:~0,15%
For /F "delims=" %%i in ('dir %LW% /a-D /s /b') do call :Process "%%~ti" %%~zi "%%~nxi" "%%~dpi"
goto :eof
:Process
set Fname=%~3%space%
@echo Fname=[%fname%]
set Fdate=%~1
@echo FDate=[%fDate%]
set FSize=%space%%2
@echo FSize=[%fSize%]
set Fpath=%~4
@echo FPath=[%fpath%]
@echo %FDate:~-15,15% ! %FSize:~-15,15% ! %FLabel% ! %FName:~0,64% ! %FPath% >> %log%
goto :eof
Nur teilweise getestet, nur als Ansatz zu verstehen.
Wenn alles so läuft, wie du dir das vorstellst, kannst du in Zeile 01 ECHO auf off setzen und unten überflüssige Echos entfernen.
Die entstandenen Logfiles kannst du dann zusammenfügen und auf Duplikate durchsuchen. Aber das wäre dann eine andere Baustelle.
Gruß
Edit:"delims=" eingefügt

Hi,
den wichtigsten Fehler solltest du erst einmal beseitigen:
In meinem Script in Zeile 07 ist die Variable "Space" nach ca. 128 Stellen mit einem Anführungszeichen abgeschlossen, das fehlt bei dir.
Also bitte nochmal entsprechend probieren.
Scripte bitte mit Codeformatierung posten (Formatierungshilfe), indem du sie in entsprechende Tags setzt
< code> ... < /code> (Leerzeichen hinter dem Linkspfeil aber entfernen. Bitte in deinem Beitrag noch ändern, das liest sich einfacher.
Warum kopierst du die Vorlage nicht einfach und übernimmst sie? Das geht doch im Kopf des Kommentars oben rechts mit Quelltext
Noch ein Hinweis: Bevor du in der Konsole nach der Eingabe irgendwas siehst, kann es eine ganze Weile dauern, je nach Anzahl der Verzeichnisse und Dateien viele Minuten. Das kommt durch den /b /s - Parameter im Dir-Befehl, der sammelt erst einmal Informationen, ehe er richtig loslegt.
den wichtigsten Fehler solltest du erst einmal beseitigen:
In meinem Script in Zeile 07 ist die Variable "Space" nach ca. 128 Stellen mit einem Anführungszeichen abgeschlossen, das fehlt bei dir.
Also bitte nochmal entsprechend probieren.
Scripte bitte mit Codeformatierung posten (Formatierungshilfe), indem du sie in entsprechende Tags setzt
< code> ... < /code> (Leerzeichen hinter dem Linkspfeil aber entfernen. Bitte in deinem Beitrag noch ändern, das liest sich einfacher.
Warum kopierst du die Vorlage nicht einfach und übernimmst sie? Das geht doch im Kopf des Kommentars oben rechts mit Quelltext
Noch ein Hinweis: Bevor du in der Konsole nach der Eingabe irgendwas siehst, kann es eine ganze Weile dauern, je nach Anzahl der Verzeichnisse und Dateien viele Minuten. Das kommt durch den /b /s - Parameter im Dir-Befehl, der sammelt erst einmal Informationen, ehe er richtig loslegt.
moin Helmut,
der Space ist nicht ausschlaggebend!
in Zeile 11: liegt der Fehler
ein Prozentzeichen ist Zuviel "%%~%dpi"
Gruß Phil
der Space ist nicht ausschlaggebend!
in Zeile 11: liegt der Fehler
For /F %%i in ('dir %LW% /a-D /s /b') do call :Process "%%~ti" %%~zi "%%~nxi" "%%~dpi"
ein Prozentzeichen ist Zuviel "%%~%dpi"
Gruß Phil

Recht hast du, hab's eingefügt.
Gruß
Gruß

Danke für den Hinweis, aber ich hatte das geändert. Nur leider passiert nach einer Anderung folgendes, wenn man danach nochmal ändert: Beim Aufruf des Kommentars ist die Änderung erst mal wieder weg,
WENN man nicht unmittelbar nach dem Aufruf STRG-F5 betätigt, und das hatte ich vor dem Edit vergessen und nicht mehr kontrolliert.
WENN man nicht unmittelbar nach dem Aufruf STRG-F5 betätigt, und das hatte ich vor dem Edit vergessen und nicht mehr kontrolliert.

[OT]
Das Problem habe ich immer, wenn ich über einen T-COM-Proxy surfe, auch die neuesten Beiträge muss ich mir immer per STRG-F5 bzw. STRG-Reload holen. Daran kann man sich gewöhnen, nur vergesse ich es manchmal.
Es passiert aber ausschließlich in diesem Forum.
[/OT]
Das Problem habe ich immer, wenn ich über einen T-COM-Proxy surfe, auch die neuesten Beiträge muss ich mir immer per STRG-F5 bzw. STRG-Reload holen. Daran kann man sich gewöhnen, nur vergesse ich es manchmal.
[/OT]

Hi,
bei der Partitionsbezeichnung kannst du eingeben, was du möchtest, allerdings ohne Leerzeichen . Die ist nur zur Unterscheidung für dich gedacht, damit du hinterher weißt, von welcher Platte du die Logdatei erstellt hast.
Hast du meine ursprüngliche berichtigte Version als Quelltext übernommen?
Ist die von dir als Endlosschleife aufgefasste Anzeige vielleicht die Ausgabe der Aufbereitung der einzelnen Zeilen? Du kannst das mit der PAUSE-Taste ja mal anhalten und kontrollieren.
Gruß
bei der Partitionsbezeichnung kannst du eingeben, was du möchtest, allerdings ohne Leerzeichen . Die ist nur zur Unterscheidung für dich gedacht, damit du hinterher weißt, von welcher Platte du die Logdatei erstellt hast.
Hast du meine ursprüngliche berichtigte Version als Quelltext übernommen?
Ist die von dir als Endlosschleife aufgefasste Anzeige vielleicht die Ausgabe der Aufbereitung der einzelnen Zeilen? Du kannst das mit der PAUSE-Taste ja mal anhalten und kontrollieren.
Gruß
moin,
hier ist einer Drin Für jede 250. Zeile die Angezeigt wird. Die Tabs werden auch anstatt der Leerzeichen erstellt.
eine Spalte für die originalPfadnamen ist zum schluss auch an die umgeschriebenen Pfadnamen noch angefügt.
Gruß Phil
und als weitere Hinweise noch!
- in der FOR wird erst der Dir Verabreitet und danach beginnt die Forschleife mit der eigentlichen Arbeit.
- wenn die Verarbeitung des DIR in der Forschleife absout nicht beginnt (oder nach längerer Zeit NICHT beginnen will), ist es Ratsam die Ausgabe des Dir in eine Datei zu leiten. und diese dann in der FOR zu verarbeiten.
- wenn die For mit Rekursion gestartet wird geschieht die Verarbeitung der Verzeichnisstruktur sofort.
- manche!! Ordner- oder DateiNamen werden in der "FOR mir DIR" bei enthaltenen SonderZeichen wie ' nicht zu Dateiattributen erweitert (wurde besonders bei mp3 beobachtet)
- Die LeerZeichen nach den Dateinamen zum Überblick in der Liste sollten gegen TAB ausgetauscht werden. Es besteht sonst keine leichte Möglichkeit die Leerzeichen eines DateiNamen von den Nachfolgenden LeerZeichen bei einer Weiterverarbeitung dieser Liste zu unterscheiden.
- Für die ungeduld gibt es dann noch einen ZeilenZähler
hier ist einer Drin Für jede 250. Zeile die Angezeigt wird. Die Tabs werden auch anstatt der Leerzeichen erstellt.
eine Spalte für die originalPfadnamen ist zum schluss auch an die umgeschriebenen Pfadnamen noch angefügt.
@echo off & setlocal
set /p "LW=Laufwerksbuchstaben eingeben: "
set "LW=%LW:~0,1%:\%LW:~3%"
if not Exist "%lw%" @echo "%LW%" nicht Vorhanden &goto :eof
set /p "VLabel=Partitionsbezeichnung eingeben: "
if not defined Vlabel set "Vlabel=Volumexx%random%"
Set "Log=%temp%\%VLABEL%.txt"
type nul>"%Log%"
set "FLabel=%VLABEL:~0,16%"
if "%FLabel:~7,1%" == "" set "FLabel=%FLabel% "
if "%FLabel:~15,1%" == "" set "FLabel=%FLabel% "
::
:: eine Dateiliste kann hier eingestellt werden
:: Beispiel: set FileList="*.doc" "*.txt" "*.mp3" "*.wav" "*.bmp" "*.avi" "*.jpg" "*.mpg" "*.iso"
set "Filelist=*"
set /a Nr=0
echo Erzeuge Dateiliste %time%
set /a ND = 250
echo Zeige jede %ND%. Bearbeitung
(
For /r "%LW%" %%i in (%FileList%) do (echo %%~ti^|%%~zi^|%FLabel%^|%%~nxi^|%%~dpi
set /a Nr+=1,x=Nr%%ND,x=1/x 2>nul >&2 || for /f %%h in ('"set /a x=Nr"') do >&3 (cls & echo\Bearbeite %%h ...)
)
)>"%log%"
echo Erzeuge PfadUmnennung und Liste %time%
set /a ND = 250
echo Zeige jede %ND%. Bearbeitung
(
For /f "usebackq tokens=1-5 delims=|" %%i in ("%log%") do (set "Name=|%%l"
set "FSize=|%%j"
set "FPath=|%%m"
setlocal enabledelayedexpansion
set "FName=!Name:~0,160!"
for /l %%j in (7,8,159) do for /f "delims= " %%k in (" !fName:~%%j,1!") do if "%%k" == " " set "fName=!fName! "
for /l %%j in (7,8,15) do for /f "delims= " %%k in (" !FSize:~%%j,1!") do if "%%k" == " " set "FSize=!FSize! "
for /l %%j in (7,8,247) do for /f "delims= " %%k in (" !FPath:~%%j,1!") do if "%%k" == " " set "FPath=!FPath! "
set "FPath=!FPath::=¦!"&rem 186
set "FPath=!FPath:\=÷!"&rem 246
for /f "tokens=* Delims=" %%j in ("%%i !FSize!|!FLabel!!fName!!FPath!|%%m") do (endlocal
>&3 echo %%j
set /a Nr-=1,x=Nr%%ND,x=1/x 2>nul >&2 || for /f %%h in ('"set /a x=Nr"') do cls & echo\Nur noch %%h ...
) )
) 3>"%temp%\%VLABEL%2see.txt"
"%temp%\%VLABEL%2see.txt"
Gruß Phil
Moin Helmut007,
danke für dein Feedback und schön, dass das Forum dein Problemchen lösen konnte.
Ich habe den Beitrag wieder -mit dem ursprunglichen Titel - zurückverschoben nach "Bätsch & Schell".
Die letzten drei Kommentare (beginnend mit meinem vom 19.9.2011) lösche ich bei Gelegenheit.
Schönen Abend
Biber
P.S.
danke für dein Feedback und schön, dass das Forum dein Problemchen lösen konnte.
Ich habe den Beitrag wieder -mit dem ursprunglichen Titel - zurückverschoben nach "Bätsch & Schell".
Die letzten drei Kommentare (beginnend mit meinem vom 19.9.2011) lösche ich bei Gelegenheit.
Schönen Abend
Biber
P.S.
....Hölle in beruflicher Hinsicht
Hmmm. ... wenn du doch auch hier arbeitest, dann könnten wir ja morgen mittag gemeinsam zur Kantine gehen....