jazzman
Goto Top

dateiname vorne abschneiden

da gibt es bestimmt eine ganz einfache lösung

hallo,

ich lege gerade eine filmdatenbank an. dazu sortiere ich filmkritiken aus txt dateien in ordner, welche nach regisseuren und filmen benannt sind.
die ausgangsdatei ist immer "nachname - filmtitel.txt" (eine ordnung ist also da).
ich möchte diese datei nun vom ausgangsverzeichnis ins regisseurverzeichnis verschieben und dabei vorne einfach den nachnamen abschneiden (denn der steht ja schon im ordner).

mehrere filme vom selben regisseur sollen in ein verzeichnis verschoben werden.
im ausgangsordner sind z.b.:
3 filme von jarmusch
3 filme von godard

ich stell mir das automatische verschieben so vor:

"c:\rezensionen\jarmusch - down by law (1986).txt" -> "h:\filme\jim jarmusch\down by law (1986).txt"
"c:\rezensionen\jarmusch - mystery train (1989).txt" -> "h:\filme\jim jarmusch\mystery train (1989).txt"
"c:\rezensionen\jarmusch - night on earth (1991).txt" -> "h:\filme\jim jarmusch\night on earth (1991).txt"

"c:\rezensionen\godard - vivre sa vie (1962).txt" -> "h:\filme\jean-luc godard\vivre sa vie (1962).txt"
"c:\rezensionen\godard - bande a part (1964).txt" -> "h:\filme\jean-luc godard\bande a part (1964).txt"
"c:\rezensionen\godard - alphaville (1965).txt" -> "h:\filme\jean-luc godard\alphaville (1965).txt"

den move befehl hab ich verstanden. aus anderen umbenennungsthreads bin ich nicht sonderlich schlau geworden, weil da nicht allzuviel erklärt wird und die leute hinten was loswerden wollen.
ich brauch aber vorn was knackiges zum abschneiden und die möglichkeit es nachvollziehen zu können, wäre natürlich auch nicht schlecht.

beste grüsse

Content-Key: 89800

Url: https://administrator.de/contentid/89800

Printed on: April 23, 2024 at 15:04 o'clock

Member: Biber
Biber Jun 13, 2008 at 16:53:45 (UTC)
Goto Top
Moin jazzman,

willkommen im Forum.

Bei Deiner Anforderung gibt es das kleine Problem, dass bei der Moverei das Skriptchen auch noch ermitteln soll, dass der Quell-Dateinamensteil "godard" in das Zielverzeichnis "jean-luc godard" gehört.

Wenn es für Dich vertretbar ist, dass diese Unterverzeichnisse unterhalb vom Ziel (bei Dir ist das "h:\filme") bereits angelegt sind, dann ginge es mit einem Oneliner vom CMD-Prompt.

Da ich Dir die Tipperei nicht zumuten will, habe ich es in einen Batch gepackt.
::---Snipp MoveRezensionen.cmd
@FOR %%a in ("c:\rezensionen\*.txt") do @(  
  FOR  /f "tokens=1,* delims=- " %%i in ("%%~nxa") do @(  
    For /d %%z in ("h:\filme\*%%i*") do @(  
    echo Move "%%a" "%%~z\%%j"  
)))  
Anstarten würde ergeben:
>e:\work\MoveRezensionen.cmd
Move "c:\rezensionen\godard - bande a part (1964).txt" "h:\filme\jean-luc godard\bande a part (1964).txt"  
Move "c:\rezensionen\jarmusch - down by law (1986).txt" "h:\filme\jim jarmusch\down by law (1986).txt"  

Wenn das passt, dann nimm das "echo" raus aus dem Batch - dann moved er wirklich.
Gute Nachricht: wenn Du das "echo" rausnimmst, dann ist der Schnipsel auch nicht mehr so lang.

Grüße
Biber

P.S. Wenn es sein muss, werde ich auch kommentieren.
Aber bitte versuch erst, gedanklich den drei FOR-Anweisungen und ihren Variablen zu folgen
  • %%a durchläuft alle *.txt-Dateinamen in Quelle c:\rezensionen
  • %%i ist nur eine FOR/F-Textzerlege- Variable... für den Dateinamen
  • %%z ermittelt aus der Liste der Unterverzeichnisse in h:\filme das Passende.

P.P.S. Geschmack hast Du ja... für "Unterm Dirndl wird gejodelt" hätte ich das nicht getan.
Member: jazzman
jazzman Jun 14, 2008 at 11:10:08 (UTC)
Goto Top
hammer!!!!!!!!!!
ja die unterverzeichnisse sind da und es klappt wie am schnürchen. ich kann sogar neue regisseure mit reinnehmen und die werden erkannt - meisterlich gelöst biber!
und das in einer geschwindigkeit, die ihresgleichen sucht.

wenn du mal in leipzig bist, komm doch in mein kino, da liegt schon ne freikarte für dich bereit.

ps: FOR /f "tokens=1,* delims=- " %%i in ("%%~nxa") do @(
warum muss ich einen token ziehen? wird bei delims was getrennt? ~nxa ist mir auch schleierhaft? die restzeilen sind klar!

pps: zum glück hast du nicht auf die rechtschreibung bei rezensionen geschaut face-wink
Member: Biber
Biber Jun 14, 2008 at 15:40:28 (UTC)
Goto Top
Moin jazzman,

freut mich, dass es klappt... und die Kinokarte hole ich auch ab, wenn in Leipzig bin, versprochen.

Zu der Zeile: FOR /f "tokens=1,* delims=- " %%i in ("%%~nxa") do @(

Mein Vorgehen war folgendes:
  • "c:\rezensionen\godard - vivre sa vie (1962).txt" ==> steht in der Variablen %%a
  • "godard - vivre sa vie (1962).txt" ==> Von %%a nur Name und eXtension %%~nxa
  • "godard" ==> erstes Token/Token 1 bei FOR /f "tokens=1,* delims=- "
  • " - " ==> die Delimiter selbst ("delims=- ") werden quasi ausgeblendet
  • "vivre sa vie (1962).txt" ==> das ist der "Rest", in dieser Syntax "tokens=1,*" als "*" beschrieben.
  • "Token1" wird als %%i und "Token Rest" als %%j weitergereicht.

Insgesamt lautete also diese FOR /F-Anweisung:
Teile mir die Input-Zeile auf in das erste Token und den ganzen Rest unter der Auflage, dass die Trennzeichen in dieser Zeile nur Bindestrich und Leerzeichen sind.

Liebe Grüße nach Leipzschg
Biber

P.S. Ich hätte mich an diesen Oneliner nie rangetraut, wenn Du nicht geschrieben hättest: "da gibt es bestimmt eine ganz einfache lösung"