Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Anhand einer TXT Datei Files in ordner automatisch nummerieren

Frage Entwicklung Batch & Shell

Mitglied: jiggyjones

jiggyjones (Level 1) - Jetzt verbinden

04.04.2011 um 13:56 Uhr, 4017 Aufrufe, 29 Kommentare

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 ;)
29 Antworten
Mitglied: Skyemugen
04.04.2011 um 14:08 Uhr
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)

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 ...)
Bitte warten ..
Mitglied: jiggyjones
04.04.2011 um 14:10 Uhr
Ja ich bräuchte ein Skript dafür...

die reihenfolge würde ich dann in der txt datei festlegen..es sind ziemlich viele einträge..müsste das halt die txt dann erstellen
Bitte warten ..
Mitglied: Skyemugen
04.04.2011 um 14:29 Uhr
Aloha,

also Ablaufprinzip dann:

- lese Dateinamen und suche Kürzel sowie Nummerierung (für's spätere rename)
- finde gesuchten Kürzel in Textdatei
- lese Nummerierung des Kürzels aus der Textdatei/Zeile
- rename Datei > ersetze alte Nummerierung durch neue

korrekt?

greetz André
Bitte warten ..
Mitglied: jiggyjones
04.04.2011 um 14:38 Uhr
Also er soll die Nummerierung nicht aus der text datei entnehmen weil ja in jedem ordner verschiedene anzahlen von files sind...

gehen wir davon aus das wir im ordner A 10 files haben

bei diesen files soll der kürzel in der textdatei gefunden werden (in der text datei sind bestimmt 50 kürzel später)

und dann soll er anhand der reihenfolge der textdatei eine neue reihenfolge erstellen und diese dann nummerieren

sprich in der text datei sind:

1.BDE
2.BSE
3.SDE
4.SYN
5.SFX

und im folder wo die files sind sind nun :

BDE SDE UND SFX files

dann soll er BDE als erstes...SDE als zweites und SFX als letztes renamen/nummerieren...

der batch soll sich nicht die zahl aus der txt nehmen sondern nur anhand der reihenfolge die in der txt datei gegeben ist eine reihenfolge erstellen...

hoffe ich konnte es verständlich machen...
Bitte warten ..
Mitglied: Skyemugen
04.04.2011 um 14:52 Uhr
Aloha,

würde die Kürzelliste zufällig alphabetisch geordnet sein oder doch durcheinander?

greetz André
Bitte warten ..
Mitglied: jiggyjones
04.04.2011 um 15:08 Uhr
durcheinander...die aufstellung der liste hat ein bestimmtes system...sie sind also nicht alphabetisch geordnet...
Bitte warten ..
Mitglied: pieh-ejdsch
04.04.2011 um 16:11 Uhr
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.

01.
@echo off 
02.
for /f "usebackq" %%i in ("Kuerzel.txt") do (set "a=1000" 
03.
  for %%j in ("?_??%%i*.wav") do (set /a a +=1 
04.
    set "File=%%~j" 
05.
    setlocal enabledelayedexpansion 
06.
    set "File2=!File:0,2!!a:~-3!!File:~4!" 
07.
    ren "!File!" "!File2!" 
08.
    endlocal 
09.
) ) 
10.
 
11.
for %%i in ("?_?????????_*.wav")  do (set "File=%%~i" 
12.
  setlocal enabledelayedexpansion 
13.
  ren "!File!" "!File:~0,2!!File:~3!" 
14.
  endlocal 
15.
)
Gruß Phil
Bitte warten ..
Mitglied: Skyemugen
04.04.2011 um 16:23 Uhr
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 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:
01.
@echo off & setlocal enabledelayedexpansion 
02.
pushd E:\Test 
03.
for /f "delims=" %%i in ('dir /b /a-d "*.wav"') do call :Ablauf %%i 
04.
popd 
05.
pause 
06.
 
07.
:Ablauf 
08.
for /f "tokens=1-5* delims=_" %%a in ("%1") do ( 
09.
set "fol=%%a" 
10.
set "mid=%%b" 
11.
set "end=_%%c_%%d_%%e" 
12.
13.
set "num=%mid:~0,2%" 
14.
set "kurz=%mid:~2,3%" 
15.
 
16.
REM hier muss ich noch etwas des Zählers ( %Zahl% )wegen tun 
17.
REM (darum flog die %Liste% erstmal raus, habe erst die Zeilennummer genutzt 
18.
REM (es ist Montag ... da gibt es bei mir nur eine Datei von einem Dateitypen *lalala*) 
19.
 
20.
echo ren %1 %fol%_!Zahl!%kurz%%end% 
21.
goto :eof
Aber vielleicht denke ich auch mal wieder viel zu kompliziert *gg*

greetz André
Bitte warten ..
Mitglied: jiggyjones
04.04.2011 um 16:31 Uhr
vielen dank für die schnelle hilfe..aber die files in temporäre ordner verschieden wäre katastrophal..können wir das nicht anders handeln ? :D

gruß jiggy
Bitte warten ..
Mitglied: Skyemugen
04.04.2011 um 16:36 Uhr
Wenn du ausschließen kannst, dass eventuelle neue Dateinamen sich mit alten überschneiden könnten, wäre das nicht notwendig ...

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
Bitte warten ..
Mitglied: jiggyjones
04.04.2011 um 16:41 Uhr
Also es wird aufjedenfall gleiche files geben sprich:

3_01bse122_AS_selements_c.wav
3_02syn122_AS_selements_c.wav
3_03sfx122_AS_selements_c.wav
3_05bse122_AS_selements_c.wav
3_07syn122_AS_selements_c.wav

und die müssten dann hintereinander renamed werden also:


3_01bse122_AS_selements_c.wav
3_02bse122_AS_selements_c.wav
3_03syn122_AS_selements_c.wav
3_04syn122_AS_selements_c.wav
3_05sfx122_AS_selements_c.wav
Bitte warten ..
Mitglied: pieh-ejdsch
04.04.2011 um 17:14 Uhr
hi sky,

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
01.
@echo off 
02.
 
03.
set "a=1000" 
04.
 
05.
for /f "usebackq" %%i in ("Kuerzel.txt") do ( 
06.
  for %%j in ("*_??%%i???_*.wav") do ( 
07.
    for /f "tokens=1* delims=_" %%k in ("%%~j") do ( 
08.
      set /a a +=1 
09.
      set "File=%%~l" 
10.
      setlocal enabledelayedexpansion 
11.
      set "File2=%%k_!a:~-3!!File:~2!" 
12.
      ren "%%k_!File!" "!File2!" 
13.
      endlocal 
14.
) ) ) 
15.
 
16.
for %%j in ("*.wav") do ( 
17.
  for /f "tokens=1* delims=_" %%k in ("%%~j") do (set "File=%%~l" 
18.
    setlocal enabledelayedexpansion 
19.
    ren "%%k_!File!" "%%k_!File:~1!" 
20.
    endlocal 
21.
) )
Gruß Phil
Bitte warten ..
Mitglied: jiggyjones
04.04.2011 um 17:52 Uhr
ich versteh nothing

ist das jetzt das endskript?
Bitte warten ..
Mitglied: Skyemugen
04.04.2011 um 18:12 Uhr
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.

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é
Bitte warten ..
Mitglied: pieh-ejdsch
04.04.2011 um 18:30 Uhr
ääähhm ja - so in etwa schon.


starte das Ding mit dieser CMD-Line-Zeile

01.
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
Bitte warten ..
Mitglied: bastla
04.04.2011 um 18:49 Uhr
@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
01.
for %%j in ("*_0*.wav") do ( 
02.
    set "File=%%~nxj"    
03.
    setlocal enabledelayedexpansion 
04.
    ren "%%j" "!File:_0=_!" 
05.
    endlocal 
06.
)
etwas zu riskant - wenn allerdings anstelle von 1000 als Startwert 1000000 und als Zeile 11
set "File2=%%k_!a!!File:~2!"
vewendet würde, sollte es mit
01.
for %%j in ("*_10000*.wav") do ( 
02.
    set "File=%%~nxj"    
03.
    setlocal enabledelayedexpansion 
04.
    ren "%%j" "!File:_10000=_!" 
05.
    endlocal 
06.
)
eigentlich mit ziemlicher Sicherheit klappen ...

Grüße
bastla
Bitte warten ..
Mitglied: 60730
04.04.2011 um 23:52 Uhr
moin,

Zitat von jiggyjones:
ich versteh nothing

ist das jetzt das endskript?

ä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
Bitte warten ..
Mitglied: pieh-ejdsch
05.04.2011 um 00:05 Uhr
moin Timo,

und wenns scheinbar mal Zeit wird

ja sowas kann schon mal länger dauern so ca 2 Monate bei einigen Umänderungen...

Gruß Phil
Bitte warten ..
Mitglied: jiggyjones
06.04.2011 um 10:21 Uhr
Moin, welches script soll ich jetzt testen?
Bitte warten ..
Mitglied: bastla
06.04.2011 um 11:03 Uhr
Hallo jiggyjones!
welches script soll ich jetzt testen?
Ich würde an Deiner Stelle gar nicht testen, sondern einfach irgend eine Variante auf Deine Daten loslassen ...

Grüße
bastla
Bitte warten ..
Mitglied: Skyemugen
06.04.2011 um 11:12 Uhr
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 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é
Bitte warten ..
Mitglied: jiggyjones
06.04.2011 um 15:23 Uhr
Ich verstehe die Scripts aber nicht
Bitte warten ..
Mitglied: 60730
06.04.2011 um 16:19 Uhr
Zitat von jiggyjones:
Ich verstehe die Scripts aber nicht

... und ich ehrlich geschrieben Fragesteller wie dich nicht oder besser warum keiner mehr Bäcker werden will und jeder in die IT.....
Bitte warten ..
Mitglied: jiggyjones
06.04.2011 um 16:24 Uhr
Ach timo deine konstruktiven beiträge helfen mir ungemein...ich bin halt nicht aus dem IT bereich...bzw nicht aus dem scripting bereich..
Bitte warten ..
Mitglied: jiggyjones
06.04.2011 um 16:37 Uhr
Da ihr untereinander euch ausgetauscht hab verwirren mich die vielen einträge nun, welches skript soll ich bitte ausprobieren? das hier?

@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
) )
Bitte warten ..
Mitglied: Biber
06.04.2011 um 18:34 Uhr
[OT] @jiggyjones
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???
Bitte warten ..
Mitglied: jiggyjones
14.04.2011 um 13:38 Uhr
Natürlich teste ich die batches nicht gleich an den original daten sondern erstmal an einer kopie, so können sich skripter und enduser sich austauschen um zum ziel zu kommen...ich lese doch oft hier das die skripter nicht gefordert werden weil leute einfach nur zu einfache skript anfragen hier reinschreiben...

ich bin mir dem risiko bewusst und das ist überhaupt kein problem...ich kann mir keinen mieten und habe auch keinen zeitdruck von daher ist doch ein solches forum für den austausch eigentlich klasse...

habe bisher auch nie schlechte erfahrungen hier gemacht, hab mir einige sehr gute skripte schreiben lassen und die skripter konnten sich dann über meine anfrage austauschen und mit ihren skript erfahrungen sich an meine anfragen machen...


wenn ich mich bei meinen anfragen nicht richtig ausdrücke kann man auch noch mal nachfragen und ich erkläre es gern so das es jeder versteht...
Bitte warten ..
Mitglied: jiggyjones
24.04.2011 um 13:35 Uhr
frohe ostern..will mir jetzt keiner helfen?
Bitte warten ..
Mitglied: 99045
24.04.2011 um 13:43 Uhr
Hallo und auch dir frohe Ostern.

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.

sollte eigentlich unmissverständlich sein.

Gruß
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Webentwicklung
gelöst HTML Output in eine txt Datei mit VisualBasicScript (2)

Frage von coca22COCA zum Thema Webentwicklung ...

Batch & Shell
Merkwürdige Zeilenformatierung in txt Datei (3)

Frage von miczar zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch - Datei aus Ordner einlesen mit Ausnahmen! (4)

Frage von Daedrafaction zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...

Peripheriegeräte
Wlan stört Funkmaus (11)

Frage von Falaffel zum Thema Peripheriegeräte ...

Peripheriegeräte
gelöst USB Festplatte verliert Laufwerksbuchstabe (9)

Frage von cese4321 zum Thema Peripheriegeräte ...