Anhand einer TXT Datei Files in ordner automatisch nummerieren
Hallo,
ich möchte wissen ob es möglich ist mit einem Batch meine millionen unterordner zu sortieren...sprich der batch sollte anhand einer TXT datei die die reihenfolge angibt die files so sortieren das sie automatisch nummeriert werden(die nummerierung ist nicht an erster stelle)
fallbeispiel :
3_02sfx122_AS_selements_c.wav
3_03bse122_AS_selements_c.wav
3_04syn122_AS_selements_c.wav
jetzt soll der batch den immer dreistelligen kürzel von zeile 5 bis 7 also sfx, bse,syn auslesen und anhand einer txt datei (wo ich die richtige reihenfolge angebe) richtig nummerieren
ich würde die txt datei selber erstellen und alle kürzel dort reinschreiben die vorkommen (sagt mir wie ob mit ; oder untereinander)
also würde in der txt datei dann stehen :
Reihenfolge:
BSE
SYN
SFX
uvm....
dann sollte das passieren:
3_01bse122_AS_selements_c.wav
3_02syn122_AS_selements_c.wav
3_03sfx122_AS_selements_c.wav
relevant für den batch wären also nur die einträge der datei:
04sfx
02syn
01bse
alles andere sollte nicht angefasst werden...hoffe ich konnte mich verständlich ausdrücken
vielen dank ;)
ich möchte wissen ob es möglich ist mit einem Batch meine millionen unterordner zu sortieren...sprich der batch sollte anhand einer TXT datei die die reihenfolge angibt die files so sortieren das sie automatisch nummeriert werden(die nummerierung ist nicht an erster stelle)
fallbeispiel :
3_02sfx122_AS_selements_c.wav
3_03bse122_AS_selements_c.wav
3_04syn122_AS_selements_c.wav
jetzt soll der batch den immer dreistelligen kürzel von zeile 5 bis 7 also sfx, bse,syn auslesen und anhand einer txt datei (wo ich die richtige reihenfolge angebe) richtig nummerieren
ich würde die txt datei selber erstellen und alle kürzel dort reinschreiben die vorkommen (sagt mir wie ob mit ; oder untereinander)
also würde in der txt datei dann stehen :
Reihenfolge:
BSE
SYN
SFX
uvm....
dann sollte das passieren:
3_01bse122_AS_selements_c.wav
3_02syn122_AS_selements_c.wav
3_03sfx122_AS_selements_c.wav
relevant für den batch wären also nur die einträge der datei:
04sfx
02syn
01bse
alles andere sollte nicht angefasst werden...hoffe ich konnte mich verständlich ausdrücken
vielen dank ;)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 163906
Url: https://administrator.de/contentid/163906
Ausgedruckt am: 20.11.2024 um 11:11 Uhr
29 Kommentare
Neuester Kommentar
Zitat von @jiggyjones:
ich möchte wissen ob es möglich ist mit einem Batch meine millionen unterordner zu sortieren...sprich der batch sollte
anhand einer TXT datei die die reihenfolge angibt die files so sortieren das sie automatisch nummeriert werden(die nummerierung
ist nicht an erster stelle)
ich möchte wissen ob es möglich ist mit einem Batch meine millionen unterordner zu sortieren...sprich der batch sollte
anhand einer TXT datei die die reihenfolge angibt die files so sortieren das sie automatisch nummeriert werden(die nummerierung
ist nicht an erster stelle)
Aloha,
ja, es ist möglich. Frage geklärt oder wolltest du etwa ein Skript dafür? Steht nirgends *stenker* ...
greetz André
P.S.: Ich sehe Illusionen und Nebelschwaden, zu 100% ist mir nicht klar, was nun welche Reihenfolge bekommen soll ... (dein relevant verwirrt mich ...)
moin,
dazu müssten aber die Datei in einen Temporären Ordner Verschoben werden - oder erstmal alle auf Dreistellig - dann auf zweistellig umbenannt werden sonst kannst Du zB. die Datei
3_03bse122_AS_selements_c.wav
nicht in
3_02bse122_AS_selements_c.wav wenn es schon vor dem Umbenennen diesen Dateinamen gibt.
Gruß Phil
dazu müssten aber die Datei in einen Temporären Ordner Verschoben werden - oder erstmal alle auf Dreistellig - dann auf zweistellig umbenannt werden sonst kannst Du zB. die Datei
3_03bse122_AS_selements_c.wav
nicht in
3_02bse122_AS_selements_c.wav wenn es schon vor dem Umbenennen diesen Dateinamen gibt.
@echo off
for /f "usebackq" %%i in ("Kuerzel.txt") do (set "a=1000"
for %%j in ("?_??%%i*.wav") do (set /a a +=1
set "File=%%~j"
setlocal enabledelayedexpansion
set "File2=!File:0,2!!a:~-3!!File:~4!"
ren "!File!" "!File2!"
endlocal
) )
for %%i in ("?_?????????_*.wav") do (set "File=%%~i"
setlocal enabledelayedexpansion
ren "!File!" "!File:~0,2!!File:~3!"
endlocal
)
Gruß Phil
Aloha Phil,
vorsicht! Angenommen er ist im Ordner 10 sprich: 10_02bse122_AS_selements_c.wav, dann wird's aber nix mit ~0,2 ...
habe bisher den
Mein Ansatz, um den Namen aufzuschlüsseln und neuzusetzen sieht bisher so aus:
Aber vielleicht denke ich auch mal wieder viel zu kompliziert *gg*
greetz André
vorsicht! Angenommen er ist im Ordner 10 sprich: 10_02bse122_AS_selements_c.wav, dann wird's aber nix mit ~0,2 ...
habe bisher den
ren
-Part im Großen und Ganzen funktionsfähig, nur das mit dem Zähler müsste ich noch anpassen *g*Mein Ansatz, um den Namen aufzuschlüsseln und neuzusetzen sieht bisher so aus:
@echo off & setlocal enabledelayedexpansion
pushd E:\Test
for /f "delims=" %%i in ('dir /b /a-d "*.wav"') do call :Ablauf %%i
popd
pause
:Ablauf
for /f "tokens=1-5* delims=_" %%a in ("%1") do (
set "fol=%%a"
set "mid=%%b"
set "end=_%%c_%%d_%%e"
)
set "num=%mid:~0,2%"
set "kurz=%mid:~2,3%"
REM hier muss ich noch etwas des Zählers ( %Zahl% )wegen tun
REM (darum flog die %Liste% erstmal raus, habe erst die Zeilennummer genutzt
REM (es ist Montag ... da gibt es bei mir nur eine Datei von einem Dateitypen *lalala*)
echo ren %1 %fol%_!Zahl!%kurz%%end%
goto :eof
Aber vielleicht denke ich auch mal wieder viel zu kompliziert *gg*
greetz André
Wenn du ausschließen kannst, dass eventuelle neue Dateinamen sich mit alten überschneiden könnten, wäre das nicht notwendig ...
P.S.:
P.S.:
Zitat von @pieh-ejdsch:
dazu müssten aber die Datei in einen Temporären Ordner Verschoben werden - oder erstmal alle auf Dreistellig - dann auf
zweistellig umbenannt werden sonst
dazu müssten aber die Datei in einen Temporären Ordner Verschoben werden - oder erstmal alle auf Dreistellig - dann auf
zweistellig umbenannt werden sonst
hi sky,
mit dem Platzhalter FrageZeichen oben schon definiert worden ist.
es wird NICHTS Verschoben nur in Zwei schritten umbenannt
eventuell müsste set "a=1000" vor das 1. For und der erste Teil vor dem Unterstrich seperiert werden in etwa so
Gruß Phil
vorsicht! Angenommen er ist im Ordner 10 sprich: 10_02bse122_AS_selements_c.wav, dann wird's aber nix mit ~0,2 ...
braucht NICHT zu sein da ja : for %%j in ("?_??%%i*.wav") do ...mit dem Platzhalter FrageZeichen oben schon definiert worden ist.
es wird NICHTS Verschoben nur in Zwei schritten umbenannt
eventuell müsste set "a=1000" vor das 1. For und der erste Teil vor dem Unterstrich seperiert werden in etwa so
@echo off
set "a=1000"
for /f "usebackq" %%i in ("Kuerzel.txt") do (
for %%j in ("*_??%%i???_*.wav") do (
for /f "tokens=1* delims=_" %%k in ("%%~j") do (
set /a a +=1
set "File=%%~l"
setlocal enabledelayedexpansion
set "File2=%%k_!a:~-3!!File:~2!"
ren "%%k_!File!" "!File2!"
endlocal
) ) )
for %%j in ("*.wav") do (
for /f "tokens=1* delims=_" %%k in ("%%~j") do (set "File=%%~l"
setlocal enabledelayedexpansion
ren "%%k_!File!" "%%k_!File:~1!"
endlocal
) )
Gruß Phil
Zitat von @pieh-ejdsch:
braucht NICHT zu sein da ja : for %%j in ("?_??%%i*.wav") do ...
mit dem Platzhalter FrageZeichen oben schon definiert worden ist.
braucht NICHT zu sein da ja : for %%j in ("?_??%%i*.wav") do ...
mit dem Platzhalter FrageZeichen oben schon definiert worden ist.
Aloha Phil,
*gg* umgestellt auf
*
hast du es aber dennoch jetzt ;) (Ich war mir persönlich nicht sicher, ob ?
für mehrere Stellen gelten kann ...)hatte es nur überflogen und mich irgendwie auf das Ende konzentriert (Montags eben ...)
muss mich selber erst einmal durch deinen Code wuseln *g*
greetz André
ääähhm ja - so in etwa schon.
starte das Ding mit dieser CMD-Line-Zeile
falls Du eine Ordner behandlung a la ParameterÜbergabe möchtest muss Du pushD %1 am Anfang und popD am Ende der Batch einfügen.
[Edit]
ja ich habs jetzt auf Sternchen Umgestellt - dafür habe ich ja auch noch: for /f "tokens=1* delims=_" .... falls am Anfang mal mehr ist ...
Montag kommt man immer so schwer in die Gänge - vor allem wenn Sonntag "Supersonnescheinwettermitfastzwanziggradindersonne" und heute "Sch???wetter" ist.
[/Edit]
Gruß Phil
starte das Ding mit dieser CMD-Line-Zeile
for /d /r "D:\VerZeichnissDerAbermillionenOrdner" %i in (*) do pushD "%i" && "d:\DieUmbenennungsBatch.cmd" && popD
falls Du eine Ordner behandlung a la ParameterÜbergabe möchtest muss Du pushD %1 am Anfang und popD am Ende der Batch einfügen.
[Edit]
ja ich habs jetzt auf Sternchen Umgestellt - dafür habe ich ja auch noch: for /f "tokens=1* delims=_" .... falls am Anfang mal mehr ist ...
Montag kommt man immer so schwer in die Gänge - vor allem wenn Sonntag "Supersonnescheinwettermitfastzwanziggradindersonne" und heute "Sch???wetter" ist.
[/Edit]
Gruß Phil
@ph
Da ja die Namenskonvention nicht abschließend beschrieben wurde (und daher insbes auch nicht klar ist, ob auf "_" auch - an anderer Stelle als der eingefügten Nummer - eine Null folgen kann), wäre mir die Vereinfachung des letzten Teiles auf
etwas zu riskant - wenn allerdings anstelle von 1000 als Startwert 1000000 und als Zeile 11
vewendet würde, sollte es mit
<code">for %%j in ("*_10000*.wav") do (
set "File=%%~nxj"
setlocal enabledelayedexpansion
ren "%%j" "!File:_10000=_!"
endlocal
)
eigentlich mit ziemlicher Sicherheit klappen ...
Grüße
bastla
Da ja die Namenskonvention nicht abschließend beschrieben wurde (und daher insbes auch nicht klar ist, ob auf "_" auch - an anderer Stelle als der eingefügten Nummer - eine Null folgen kann), wäre mir die Vereinfachung des letzten Teiles auf
for %%j in ("*_0*.wav") do (
set "File=%%~nxj"
setlocal enabledelayedexpansion
ren "%%j" "!File:_0=_!"
endlocal
)
set "File2=%%k_!a!!File:~2!"
<code">for %%j in ("*_10000*.wav") do (
set "File=%%~nxj"
setlocal enabledelayedexpansion
ren "%%j" "!File:_10000=_!"
endlocal
)
eigentlich mit ziemlicher Sicherheit klappen ...
Grüße
bastla
moin,
ähhh versteh ich das jetzt richtig und du fragst nach einem script, läßt dir ein paar schreiben und wenns scheinbar mal Zeit wird - fragst du nach, ob das Script schon endgültig ist?
Selber schreiben - nada
Selber testen - niente
Schankedöhn
ähhh versteh ich das jetzt richtig und du fragst nach einem script, läßt dir ein paar schreiben und wenns scheinbar mal Zeit wird - fragst du nach, ob das Script schon endgültig ist?
Selber schreiben - nada
Selber testen - niente
Schankedöhn
moin Timo,
ja sowas kann schon mal länger dauern so ca 2 Monate bei einigen Umänderungen...
Gruß Phil
und wenns scheinbar mal Zeit wird
ja sowas kann schon mal länger dauern so ca 2 Monate bei einigen Umänderungen...
Gruß Phil
Aloha bastla!
Hör bloß auf, am Ende macht er das noch, weil man ihm das echo vor ren nicht mit auf den Weg gegeben hat ... und dann passt doch irgendetwas nicht & schon ist das Gejammer groß
@jiggyjones
...um mal mit einem Spruch aus der Werbung zu kommen:
It's time for another revolution.
oder anders ausgedrückt:
Learning by selfdoing, setze doch bastlas Optimierung in Phils Skript an die dazugehörige Stelle, setze ein
greetz André
Hör bloß auf, am Ende macht er das noch, weil man ihm das echo vor ren nicht mit auf den Weg gegeben hat ... und dann passt doch irgendetwas nicht & schon ist das Gejammer groß
@jiggyjones
...um mal mit einem Spruch aus der Werbung zu kommen:
It's time for another revolution.
oder anders ausgedrückt:
Learning by selfdoing, setze doch bastlas Optimierung in Phils Skript an die dazugehörige Stelle, setze ein
echo
jeweils vor ren
und ziehe Phils Kommentar vom 04.04.2011, 18:30:01 Uhr zu Gemüte und versuche selbst zu verstehen, was eigentlich wie geschehen soll ...greetz André
... und ich ehrlich geschrieben Fragesteller wie dich nicht oder besser warum keiner mehr Bäcker werden will und jeder in die IT.....
[OT] @jiggyjones
Falls du eine ernst [und nicht etwa hämisch gemeinte] Antwort von mir zumindest wohlwollend an dich heranlässt:
Gar keins.
Die kleine Fachdiskussion oben sollte dir doch hinreichend belegt haben, dass es absolut fahrlässig, ein totales va-banque-Spiel wäre,
irgendeinen kryptischen Zeichensalat , der aussieht wie vom Mähdrescher eingeholt, auf deine Echt-Daten loszulassen.
Du kannst keine reale Risikokalkulation abgeben, weisst nicht, was passiert, kannst es nicht allein zurückdrehen..
.-->alles K.O.-Kriterien.
Und die Jungs & Mädels hier haben [höchstens] das mit umgesetzt, was du als erwähnenswert gesendet hast.
Und davon auch nur das, was sie auch so empfangen haben, wie du es gemeint hast.
--> hat doch keinen Sinn. Du bist [noch] nicht soweit, dass du allein einen der Ansätze nachvollziehen und anpassen kannst,
--> und einen, der während der -ich sag mal "Migration" der Daten - neben dir steht für den Notfall hast du auch nicht.
---> unterm Strich: Jemand mieten, der es macht --oder-- drei Tage lang Vollzeit Skripten üben.
Für den Kram oben wirst du kein Rundum-Sorglos-Paket bekommen können.
Grüße
Biber
[/OT]
...obwohl.... ist es wirklich "[OT]" in diesem Fall???
welches skript soll ich bitte ausprobieren? das hier?
Falls du eine ernst [und nicht etwa hämisch gemeinte] Antwort von mir zumindest wohlwollend an dich heranlässt:
Gar keins.
Die kleine Fachdiskussion oben sollte dir doch hinreichend belegt haben, dass es absolut fahrlässig, ein totales va-banque-Spiel wäre,
irgendeinen kryptischen Zeichensalat , der aussieht wie vom Mähdrescher eingeholt, auf deine Echt-Daten loszulassen.
Du kannst keine reale Risikokalkulation abgeben, weisst nicht, was passiert, kannst es nicht allein zurückdrehen..
.-->alles K.O.-Kriterien.
Und die Jungs & Mädels hier haben [höchstens] das mit umgesetzt, was du als erwähnenswert gesendet hast.
Und davon auch nur das, was sie auch so empfangen haben, wie du es gemeint hast.
--> hat doch keinen Sinn. Du bist [noch] nicht soweit, dass du allein einen der Ansätze nachvollziehen und anpassen kannst,
--> und einen, der während der -ich sag mal "Migration" der Daten - neben dir steht für den Notfall hast du auch nicht.
---> unterm Strich: Jemand mieten, der es macht --oder-- drei Tage lang Vollzeit Skripten üben.
Für den Kram oben wirst du kein Rundum-Sorglos-Paket bekommen können.
Grüße
Biber
[/OT]
...obwohl.... ist es wirklich "[OT]" in diesem Fall???
Hallo und auch dir frohe Ostern.
Versucht zu helfen haben doch schon diverse User, nur
sollte eigentlich unmissverständlich sein.
Gruß
Versucht zu helfen haben doch schon diverse User, nur
Zitat von @Biber:
---> unterm Strich: Jemand mieten, der es macht --oder-- drei Tage lang Vollzeit Skripten üben.
Für den Kram oben wirst du kein Rundum-Sorglos-Paket bekommen können.
---> unterm Strich: Jemand mieten, der es macht --oder-- drei Tage lang Vollzeit Skripten üben.
Für den Kram oben wirst du kein Rundum-Sorglos-Paket bekommen können.
sollte eigentlich unmissverständlich sein.
Gruß