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
GELÖST

dateiname vorne abschneiden

Frage Entwicklung Batch & Shell

Mitglied: jazzman

jazzman (Level 1) - Jetzt verbinden

13.06.2008, aktualisiert 14.06.2008, 8694 Aufrufe, 3 Kommentare

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
Mitglied: Biber
13.06.2008 um 18:53 Uhr
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.
01.
::---Snipp MoveRezensionen.cmd 
02.
@FOR %%a in ("c:\rezensionen\*.txt") do @( 
03.
  FOR  /f "tokens=1,* delims=- " %%i in ("%%~nxa") do @( 
04.
    For /d %%z in ("h:\filme\*%%i*") do @( 
05.
    echo Move "%%a" "%%~z\%%j" 
06.
)))  
Anstarten würde ergeben:
01.
>e:\work\MoveRezensionen.cmd 
02.
Move "c:\rezensionen\godard - bande a part (1964).txt" "h:\filme\jean-luc godard\bande a part (1964).txt" 
03.
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.
Bitte warten ..
Mitglied: jazzman
14.06.2008 um 13:10 Uhr
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
Bitte warten ..
Mitglied: Biber
14.06.2008 um 17:40 Uhr
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"
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Windows 10
Datum verstellt sich um paar Tage nach vorn (6)

Frage von Harlin zum Thema Windows 10 ...

Batch & Shell
gelöst Dateinamen umschreiben batch (5)

Frage von jocheng zum Thema Batch & Shell ...

Batch & Shell
Ordnernamen aus Dateinamen erstellen (1)

Frage von Dr.Byte zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Windows 10

Windows 10: Erste Anmeldung Animation deaktivieren

(3)

Anleitung von alemanne21 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Linksys wrt1200ac v2 mit dd-wrt: keine vlan-einstellungen im GUI (15)

Frage von Pixi123 zum Thema Router & Routing ...

E-Business
Wo tragt ihr eure privaten Termine ein? (13)

Frage von honeybee zum Thema E-Business ...

Windows Server
Terminalserver starten willkürlich neu (12)

Frage von thaefliger zum Thema Windows Server ...

Batch & Shell
Batch zum suchen und verschieben von Verknüpfungen (12)

Frage von zeroblue2005 zum Thema Batch & Shell ...