Kopieren von Dateien in jeweiliges Unterverzeichnis

German support forum

Moderators: Hacker, Stefan2, white

User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Doch, das sollte auch mit Regex gehen:
Mehrfach Umbenennen Tool wrote:Umbenennen Maske: [N]
Erweiterung: [E]
Suchen & Ersetzten
Suche nach: ^(.*)
Ersetzen durch: \.\.\\$1
[x] Regex
Das sieht allerdings immer so high sophisticated, cryptical aus. :wink:
In beiden Fällen allerdings darauf aufpassen, dass man keine Verzeichnisse zusätzlich zu den Files markiert.
Am besten in der Suche per "Erweitert [x] Attribute: [ ] Verzeichnis" von vornherein verhindern, dass Verzeichnisse überhaupt gelistet werden.

Mit freundlichem Gruß,
Holger
User avatar
Peter
Power Member
Power Member
Posts: 2068
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

Danke, Holger

kommt in die Schatzkiste ..

Peter
TC 10.xx / #266191
Win 10 x64
StatusQuo
Power Member
Power Member
Posts: 1524
Joined: 2007-01-17, 21:36 UTC
Location: Germany

Post by *StatusQuo »

2sarahschnecke
Denn sobald "ä,ö,ü" im Namen sind, wird das File leider ignoriert.
Falls Du statt HolgerKs MUT/RegEx-Lösung lieber die gewohnte Batch von Sheepdog weiter verwenden möchtest:
hier eine ausgebaute Variante, die auch Sonderzeichen/Umlaute verarbeitet (entpacken in TC mit Datei->decodieren):

Code: Select all

begin 644 TC_Move2Parent.cmd
M("`@0&5C:&\@;V9F#0H@("!S971L;V-A;`T*("`@<V5T(&-P06-T:79E/3`-
M"B`@('-E="!C<$]%33TP#0H-"B`@("`@(#H@<F5M(&-H96-K(&9O<B!E>&ES
M=&5N8V4@;V8@0TA#4"Y#3TTL(%)%1RY%6$4-"B`@(&-O<'D@.CHZ(&YU;"`R
M/FYU;`T*("`@8VAC<"YC;VT@+S\@/FYU;`T*("`@:68@;F]T(&5R<F]R;&5V
M96P@,2`H#0H@("`@("!C;W!Y(#HZ.B!N=6P@,CYN=6P-"B`@("`@(')E9RYE
M>&4@+S\@/FYU;`T*("`@*0T*("`@:68@97)R;W)L979E;"`Q("@-"B`@("`@
M(&5C:&\N#0H@("`@("!E8VAO("HJ*B!787)N:6YG7CH@4D5'+D5812!A;F0O
M;W(@0TA#4"Y#3TT@;F]T(&9O=6YD(%XH<V5E(&5R<F]R(&UE<W-A9V4@86)O
M=F5>*2P@#0H@("`@("!G;W1O($YO0W!3=VET8V@-"B`@("D-"B`@(&-O<'D@
M;G5L(&YU;"`^;G5L#0H-"B`@("`@(#H@<F5M(&=E="!L;V-A;"!C;V1E<&%G
M92!N=6UB97)S.R!T:&%N:W,@,B!$86QA:2!F;W(@=&AI<PT*("`@9F]R("]F
M(")S:VEP/30@=&]K96YS/3,B("4E:2!I;B`H)W)E9RYE>&4@<75E<GD@(DA+
M15E?3$]#04Q?34%#2$E.15Q365-414U<0W5R<F5N=$-O;G1R;VQ3971<0V]N
M=')O;%Q.;'-<0V]D95!A9V4B("]V(")!0U`B)RD@9&\@*`T*("`@("!S970@
M8W!!8W1I=F4])25I#0H@("`I#0H@("!F;W(@+V8@(G-K:7`]-"!T;VME;G,]
M,R(@)25I(&EN("@G<F5G+F5X92!Q=65R>2`B2$M%65],3T-!3%]-04-(24Y%
M7%-94U1%35Q#=7)R96YT0V]N=')O;%-E=%Q#;VYT<F]L7$YL<UQ#;V1E4&%G
M92(@+W8@(D]%34-0(B<I(&1O("@-"B`@("`@<V5T(&-P3T5-/24E:0T*("`@
M*0T*("`@9F]R("4E92!I;B`H(B5C<$%C=&EV924B*2!D;R!F;W(@)25F(&EN
M("@B)6-P3T5-)2(I(&1O(&=O=&\@4W1A<G0-"B`@(&5C:&\@*BHJ(%=A<FYI
M;F=>.B!#;W5L9"!N;W0@<F5T<FEE=F4@8V]D97!A9V4@:6YF;W)M871I;VX@
M=VET:"!214<N15A%+`T*("`@9V]T;R!.;T-P4W=I=&-H("`@#0H-"CI3=&%R
M="`@(`T*("`@("`@.B!R96T@;&]A9"!!3E-)(&-O9&5P86=E#0H@("!C:&-P
M+F-O;2`E8W!!8W1I=F4E(#X@3E5,#0H-"CI.;T-P4W=I=&-H#0H@("!I9B`@
M("`@(B5^,2(]/2(B(&5C:&\@4WEN=&%X.B9E8VAO("`@("5^;G@P(")D.EQP
M871H7&9I;&5L:7-T+G1X="(@("`@)F=O=&\@8V4-"B`@(`T*("`@<F5M($1A
M=&5I96X@:6X@:6AR(%9A=&5R=F5R>F5I8VAN:7,@=F5R<V-H:65B96X-"B`@
M(')E;2!$:65S92!"871C:&1A=&5I(&%U9B!E:6YE;B!"=71T;VX-"B`@(')E
M;2!+;VUM86YD;SH@)5!F861?>G5R7V)A=&-H)5Q6871E<BYB870-"B`@(')E
M;2!087)A;65T97(Z("5,#0H@("!R96T@1&%N;B!E:6YF86-H(&1I92!3=6-H
M92!A=69R=69E;B!U;F0@86YW96YD96XL(%M.54TK72!D<H%C:V5N+`T*("`@
M<F5M('5M(&%L;&4@875S>G5WA&AL96X@=6YD(&%U9B!D96X@0G5T=&]N(&1R
M@6-K96X-"@T*("`@9F]R("]F(")T;VME;G,]*B(@)25A(&EN("@E,2D@9&\@
M;6]V92`B)25^9FYA(B`B)25^9'!A7"XN(@T*#0H@("!214T@>G5R($5R;(1R
M=6YG.B!T;VME;G,]*B!B97=I<FMT+"!D87-S(&1I92!K;VUP;&5T=&4@6F5I
M;&4@86QS(&5I;B!3=')I;F<@8F5H86YD96QT('=I<F0N#0H@("!R96T@5X1R
M92!D:65S(&YI8VAT(&1E<B!&86QL+"!W@7)D92!B96D@3F%M96XO4&9A9&5N
M(&UI="!L965R>F5I8VAE;B!D97(@4W1R:6YG(&YA8V@-"B`@(')E;2!D96T@
M3&5E<GIE:6-H96X@86)G97-C:&YI='1E;B!W97)D96XL(&1A(&1E9F%U;'1M
MA.%I9R!,965R>F5I8VAE;B!U;F0@5&%B=6QA=&]R96X@86QS#0H@("!R96T@
M5')E;FYZ96EC:&5N('=I<FME;BX-"B`@(')E;2!E:6X@(F1E;&EM<STB(&B$
M='1E(&1I92!G;&5I8VAE(%=I<FMU;F<L(&1A(&1A;6ET(&ME:6X@5')E;FYZ
M96EC:&5N(&UE:'(@9&5F:6YI97)T(&ES="X@#0H-"B`@(&=O=&\@8V4-"@T*
M.F-E#0H@("`@("`Z(')E;2!L;V%D($%30TE)+T]%32!C;V1E<&%G92!A9V%I
M;@T*("`@:68@;F]T("(E8W!/14TE(CT](C`B(&-H8W`N8V]M("5C<$]%324@
M/FYU;`T*#0HZ97@-"@T*("`@.B!R96T@4WEN=&%X.B`@("5^;G@P(")D.EQP
3871H7&9I;&5L:7-T+G1X="(-"@``
`
end
sum -r/size 9579/2089
Who the hell is General Failure, and why is he reading my disk?
-- TC starter menu: Fast yet descriptive command access!
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Um, die Vielfalt zu bereichern, das Ganze auch noch mal in VBScript:

Code: Select all

Const FOR_READING = 1
Const sScriptName = "Move files 2 parent folders"
If WScript.arguments.Count = 0 Then
    MsgBox  "Script file for Total Commander %L processing:" & vbCrLf &_
            "Move selected files into parent folder" & vbCrLf &_
            "Usage:" & vbCrLf &_
            vbCrLf &_
            "  Command  : MoveFiles2ParentFolders.vbs" & vbCrLf &_
            "  Parameters : ""%L"" [opt]" & vbCrLf &_
            "  Tooltip       : move all marked files into parent folder (..\)" & vbCrLf &_
            vbCrLf &_
            "[opt] = -O   Overwrite existing files" & vbCrLf &_
            "[opt] = -A   Ask before overwriting existing files" & vbCrLf &_
            "[opt] = -S   Secure: do not overwrite any existing files" & vbCrLf &_
            vbCrLf &_
            "default opt is   -A", vbOKOnly, sScriptName
Else
    sFileList = WScript.arguments.Item( 0 )
    sOpt = "-a"
    bOverwrite = true
    bAskForOverwrite = true
    If WScript.arguments.Count > 1 Then
        sOpt = lcase (WScript.arguments.Item( 1 ))
    End if
    Select Case sOpt
        Case "-o"
            bOverwrite = true
            bAskForOverwrite = false
        Case "-a"
            bOverwrite = true
            bAskForOverwrite = true
        Case "-s"
            bOverwrite = false
            bAskForOverwrite = false
    End Select

    Set oFSO = CreateObject( "Scripting.FileSystemObject" )

    If  oFSO.FileExists(sFileList) Then

        Set oTextStream = oFSO.OpenTextFile( sFileList, FOR_READING )
        Do Until oTextStream.AtEndOfStream

            sFilePathName = oTextStream.ReadLine
            If  oFSO.FileExists( sFilePathName ) Then
           
                sPath = oFSO.GetParentFolderName( sFilePathName )
                sName = oFSO.GetBaseName( sFilePathName )
                sExtension = oFSO.GetExtensionName( sFilePathName )
                sNewFilePathName = sPath & "\..\" & sName & "." & sExtension

                If oFSO.GetAbsolutePathName(sFilePathName) = oFSO.GetAbsolutePathName(sNewFilePathName) Then
                    If Not bOverwrite Then
                        MsgBox  "Source and Destination is identical!" & vbCrLf &_
                                "   " & oFSO.GetAbsolutePathName(sNewFilePathName) & vbCrLf &_
                                "Skipped!", vbExclamation, sScriptName
                    End If
                ElseIf Not oFSO.FileExists( sNewFilePathName ) Then
                    oFSO.MoveFile  sFilePathName, sNewFilePathName
                ElseIf bAskForOverwrite And bOverwrite Then
                    sQuestion = "File Exists!" & vbCrLf &_
                                "  " & sNewFilePathName &vbCrLf &_
                                "Overwrite?"
                    answer = MsgBox ( sQuestion, vbYesNoCancel + vbQuestion, sScriptName )
                    If answer = vbCancel Then
                        Exit Do
                    ElseIf answer = vbYes Then
                        oFSO.DeleteFile sNewFilePathName
                        oFSO.MoveFile  sFilePathName, sNewFilePathName
                        answer = MsgBox ( "Do You want to overwrite ALL files?", vbYesNo + vbQuestion, sScriptName )
                        If answer = vbYes Then
                               bAskForOverwrite = false
                        End If
                    End If
                ElseIf bOverwrite Then
                        oFSO.DeleteFile sNewFilePathName
                        oFSO.MoveFile  sFilePathName, sNewFilePathName
                Else
                        MsgBox "Destination file exists (skipped)!:" & vbCrLf &_
                                "   " & sNewFilePathName, vbOKOnly, sScriptName
                End If
            End If
        Loop
        oTextStream.Close
    Else
        MsgBox  "Input file list " & vbCrLf &_
                "   " & sFileList & vbCrLf &_
                " not found.", vbExclamation, sScriptName
    End If
End If
- Code markieren und in Texteditor kopieren
- als MoveFiles2ParentFolders.vbs abspeichern
- MoveFiles2ParentFolders.vbs auf eine leere Stelle der Buttonbar ziehen
- Button bearbeiten, und Parameter "%L" ergänzen
- Wer auf Nummer Sicher gehen will, der setzt den "Parameter: "%L" -A", und wird dann jedesmal gefragt ob ein bereits bestehendes File überschrieben werden soll.
- Noch eine Nummer sicherer ist "Parameter: "%L" -S". Es wird dann nur angezeigt, das ein File überschrieben würde.
- Diejenigen die sich an aufpoppenden Dialogen stören, setzten "Parameter: "%L" -O", oder löschen einfach die richtigen zwei Drittel des Scriptcodes. :wink:

Mit freundlichem Gruß,
Holger

Edit: Fehlerbehandlung wenn Files im Rootverzeichnis selektiert sind.
Edit2: Default Opt auf -A geändert. Zusätzliche Abfrage Abbruch oder Alles überschreiben.
Edit3: "%L" anstelle von %L
Danke Dalai! Ich fall immer wieder darauf rein, weil ich auf allen meinen Rechnern TEMP=C:\Temp gesetzt habe. :oops:
Last edited by HolgerK on 2008-04-09, 14:31 UTC, edited 4 times in total.
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

:!: Falls schon jemand den obigen Script benutzt hat, dann unbedingt den Script noch mal aus dem editierten Post http://ghisler.ch/board/viewtopic.php?p=146817 erneut kopieren!
Es besteht ansonsten die Gefahr eines Datenverlusts :!:

Im Wurzelverzeichnis selektierte Files wurden in der vorherigen Version gelöscht, da zum Wurzelverzeichnis kein Parentverzeichnis mehr existiert, und versucht wurde das File auf sich selber zu verschieben.

Mit freundlichem Gruß,
Holger
sarahschnecke
Junior Member
Junior Member
Posts: 11
Joined: 2004-09-11, 02:46 UTC

Post by *sarahschnecke »

:shock: Wow, was für eine Resonanz!

:D Vielen, vielen Dank für Euere Mühe! Spitzenklasse!
Ich habe mich für die VBS-Variante entschieden.

Jetzt habe ich nur noch eine ganz dreiste Bitte als Ergänzung für das Script (falls es keine so grossen Umstände macht), um es vollends Perfekt zu machen.

In der "File Exists!"-MsgBox, wäre als Alternative zu "Overwrite? JA/NEIN", noch ein JA,ALLE und NEIN,KEINES optimal.

Also vielen lieben Dank nochmal an alle, die sich hier so viel Mühe gemacht haben! :wink:

PS: Übrigens,
HolgerK wrote:high sophisticated, cryptical
Ist ein klasse Ausdruck und trifft es genau auf den Punkt!
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

sarahschnecke wrote:...Jetzt habe ich nur noch eine ganz dreiste Bitte als Ergänzung für das Script (falls es keine so grossen Umstände macht), um es vollends Perfekt zu machen.

In der "File Exists!"-MsgBox, wäre als Alternative zu "Overwrite? JA/NEIN", noch ein JA,ALLE und NEIN,KEINES optimal.
Kein Problem :wink:

Allerdings nicht in einem einzigen Dialog (das ginge nicht mehr mit der Standard MsgBox) sondern mit zwei Abfragen:
Bei der Abfrage "Overwrite?" kann jetzt [JA] [Nein] [Abbruch] ausgewählt werden.
[Abbruch] bricht dann den kompletten Vorgang ab.

Wenn [JA] ausgewählt wird, dann erfolgt eine zweite Abfrage, ob ALLE Dateien überschrieben werden sollen.
Wird diese Frage dann auch mit [JA] beantwortet, dann werden alle weiteren Verschiebeoperationen ohne weitere Nachfrage durchgeführt.

Den Script habe ich hier aktualisiert: http://ghisler.ch/board/viewtopic.php?p=146817

Beim Verschieben in das Vaterverzeichnis sollte man übrigens immer etwas vorsichtig sein.
Wenn man z.B folgende Files markiert:

Code: Select all

X:\test\A\file.txt
X:\test\B\file.txt
X:\test\C\file.txt
X:\test\file.txt
Bleibt nach der Operation nur noch:

Code: Select all

X:\file.txt
übrig (das ürsprüngliche "X:\test\C\file.txt").
Das hängt zudem auch noch von der Reihenfolge der Sortierung in der Liste ab.
Also immer vorher mal einen Kontrollblick auf das Suchergebnis werfen, und im Zweifelsfall eher [Abbruch] betätigen.

Mit freundlichem Gruß,
Holger
frogtie
Junior Member
Junior Member
Posts: 45
Joined: 2008-04-09, 13:15 UTC

merkwürdiger Fehler

Post by *frogtie »

Hallo Leute,

zunächst mal eine riesige Anerkennung für Eure Arbeit hier.
Irgendwie komme ich mir schon ein wenig "dumm" vor, wenn ich auf solch geballtes Wissen stosse....

Doch nun zu meinem Problem:

Habe alles so gemacht wie beschrieben:
1.) VB Script im Texteditor ertsellt und im Root C:\ gespeichert.
2) Dann auf die Leiste in TC 7 gezogen.
3.) In die zweite Zeile (Parameter) %L geschrieben und gespeichert.
4.) Im rechten Fenster mit der Suchfunktion nach *.jpg gesucht, mit "anwenden" ins Fenster gelegt, und mit Ctrl+A alle markiert.
5.) DEN neuen Button gedrück.
6.) Es erscheint kleiner Requester mit dem Text: Input file list C:\DOKUME~1\User\Lokale not found.

Die gesuchten Files sind aber auf der Platte D.

Was mach ich falsch ????????

Danke im Voraus für Eure Antworten.
User avatar
Dalai
Power Member
Power Member
Posts: 10011
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

frogtie wrote:Irgendwie komme ich mir schon ein wenig "dumm" vor, wenn ich auf solch geballtes Wissen stosse....
Dafür hast du mit Sicherheit Wissen auf anderen Gebieten, von denen z.B. ich keine Ahnung habe. Es gleicht sich also aus ;)
frogtie wrote:6.) Es erscheint kleiner Requester mit dem Text: Input file list C:\DOKUME~1\User\Lokale not found.
Fehlen da evtl. Anführungszeichen um den Parameter? Probier mal "%L".

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
frogtie
Junior Member
Junior Member
Posts: 45
Joined: 2008-04-09, 13:15 UTC

falscher Fehler

Post by *frogtie »

Danke Dalai !!!!

Die Anführungszeichen haben gefehlt.

WOW..... Dat Ding funzzt..

Vielen Dank.
frogtie
Junior Member
Junior Member
Posts: 45
Joined: 2008-04-09, 13:15 UTC

komfortables Entpacken

Post by *frogtie »

Hallo zusammen....

Der erste Versuch in Eurem Forum war ja wirklich ein durchschlagender Erfolg.

Deshalb bin ich so unverschämt und wage gleich mal ne weitere Frage:

Gibt es im TC eine Funktion, um .rar oder .zip Dateien beim Entpacken in ein gleichnamiges Verzeichnis zu bringen ?

Bsp: Die Dateien aus dem gepackten File "Muster1.rar" sollen sich nach dem Enpacken in einem Verzeichnis namens "Muster1" wiederfinden.

Wenn man zig Dateien in einem Rutsch entpacken will, wäre das eine enorme Entlastung.

Freue mich schon jetzt auf Eure Antworten.
User avatar
Dalai
Power Member
Power Member
Posts: 10011
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Ich kenne zwar keine Funktion im TC, weiß aber, dass WinRAR sowas kann. Ich benutze ihn jedenfalls (unter anderem) dafür. Man kann dummerweise immer nur ein Archiv markieren und dann in ein "gleichnamiges" Verzeichnis entpacken.

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Dalai wrote:Fehlen da evtl. Anführungszeichen um den Parameter? Probier mal "%L".
Danke für den Hinweis. :oops:
Ich habe den Script oben angepasst.

Mit freundlichem Gruß,
Holger
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Re: komfortables Entpacken

Post by *HolgerK »

frogtie wrote:Gibt es im TC eine Funktion, um .rar oder .zip Dateien beim Entpacken in ein gleichnamiges Verzeichnis zu bringen ?

Bsp: Die Dateien aus dem gepackten File "Muster1.rar" sollen sich nach dem Enpacken in einem Verzeichnis namens "Muster1" wiederfinden.
- Archivdateien markieren
-<Alt+F9>
- [x] Jedes Archiv in separates Verzeichnis (Name des Archivs) entpacken

HTH,
Holger
frogtie
Junior Member
Junior Member
Posts: 45
Joined: 2008-04-09, 13:15 UTC

Re: komfortables Entpacken

Post by *frogtie »

HolgerK wrote:
frogtie wrote:Gibt es im TC eine Funktion, um .rar oder .zip Dateien beim Entpacken in ein gleichnamiges Verzeichnis zu bringen ?

Bsp: Die Dateien aus dem gepackten File "Muster1.rar" sollen sich nach dem Enpacken in einem Verzeichnis namens "Muster1" wiederfinden.
- Archivdateien markieren
-<Alt+F9>
- [x] Jedes Archiv in separates Verzeichnis (Name des Archivs) entpacken

HTH,
Holger

mann o mann... wie blind bin ich eigentlich. Tausendmal gemacht, aber nie das Kreuzchen gefunden.

Danke Holger
Post Reply