Hallo zusammen,
Mit Total Commander habe ich nun nach den Dateityprn gesucht die ich haben will.
Die Dateien sollen nun alle in einen Ordner kopiert werden.
An sich kein Problem, die Dateien werden angezeigt und ich kann sie markieren und in den gewünschten Ordner kopieren.
Folgendes Problem besteht aber nun:
Ich habe hin und wieder Dateien die den gleichen Namen haber ABER eine unterschiedliche Größe.
Zum Beispiel:
Dateiname: mendocin.mid
Größe: 74 KB
Davon habe ich ca. 50
Ich habe nun aber auch Dateien, die genauso heißen sprich
Dateiname: mendocin.mid - ABER in der
Größe: 80 KB oder 95 KB usw. sind.
Ist nur zu Veranschaulichung
TotalComander soll die Dateien nur dann ersetzen wenn die Datei den gleichen Namen UND Größe haben.
Sollte sich die Datei im Namen gleichen ABER
eine andere Größe haben, soll die Datei automatisch umbenannt werden.
Ich hoffe ich habe es verständlich erklären können.
Wünsche euch noch einen schönen Abend.
Dateien kopieren / nur ersetzen wenn gleicher Name und Größe
Moderators: Hacker, Stefan2, white
PowerShell: Dateien kopieren / nur ersetzen wenn gleicher Name und Größe
Probiere es mal so:
# Explanation:
# - store script as text file "COPY.ps1"
# - create an button as
# ------------------------------------------
# CMD PowerShell -noexit
# PARA 'c:\Progs\TotalCommander\Tools\CMDs\COPY.ps1' '%L' '%T'
# PATH <empty>
# ICON powershell
# TIP COPY.ps1 '%L' '%T'
# [x]As Symbol
# ------------------------------------------
# - choose the target folder
# - go to the other panel of TC (your source)
# - select your files (or search for it and select all)
# - execute this button
# - if all works file, you can remove "NEU" and also "-NoExit"
# Explanation:
# - store script as text file "COPY.ps1"
# - create an button as
# ------------------------------------------
# CMD PowerShell -noexit
# PARA 'c:\Progs\TotalCommander\Tools\CMDs\COPY.ps1' '%L' '%T'
# PATH <empty>
# ICON powershell
# TIP COPY.ps1 '%L' '%T'
# [x]As Symbol
# ------------------------------------------
# - choose the target folder
# - go to the other panel of TC (your source)
# - select your files (or search for it and select all)
# - execute this button
# - if all works file, you can remove "NEU" and also "-NoExit"
Code: Select all
# COPY.ps1
# Found at https://www.ghisler.ch/board/viewtopic.php?t=83270
# Dateien kopieren. Falls eine bereits vorhanden ist, ersetze diese NUR bei gleichem Name und Größe (Inhalt egal!!!)
# Stefan 17:31 24.07.2024
# ###############################################
# SOURCE: TCs temp list due to TCs "%L"-parameter # Example: 'C:\Users\username\AppData\Local\Temp\CMDA3C.tmp'
$S=$Args[0]
# Target: Target panel due to TCs "%T"-parameter
$T=$Args[1]
# ###############################################
# Script:
# Rule: copy to target and overwrite only if same name and same size
# Aktiviere NUR EINE Variante !
Get-Content "$S" | ForEach{ $N=(GI $_).Name ; $L=(GI $_).Length ;
# Falls der Name bereits im Target existiert # Prüfe die Größe ob gleich
# Variante-1: Kopiere bei gleicher Größe, überspringe Vorhandene andere Dateien
IF(Test-Path "$T$N"){ IF((GI "$T\$N").Length -eq $L){COPY $N "$T\$N NEU"}} else{COPY "$N" "$T" } }
# Variante-2: Kopiere bei gleicher Größe, überschreibe auch die anderen Dateien anderer Größe
# IF(Test-Path "$T$N"){ IF((GI "$T\$N").Length -eq $L){COPY $N "$T\$N NEU"} else{COPY "$N" "$T" } } }
# /Script
# ###############################################
# Explanation:
# - store script as text file "COPY.ps1"
# - create an button as
# ------------------------------------------
# CMD PowerShell -noexit
# PARA 'c:\Progs\TotalCommander\Tools\CMDs\COPY.ps1' '%L' '%T'
# PATH <empty>
# ICON powershell
# TIP COPY.ps1 '%L' '%T'
# [x]As Symbol
# ------------------------------------------
# How to:
# - choose the target folder
# - go to the other panel of TC (your source)
# - select your files (or search for it)
# - execute this button
# - if all works file, you can remove "NEU" and also "-NoExit"
#
# EOF
# ###############################################
Re: Dateien kopieren / nur ersetzen wenn gleicher Name und Größe
@stefan
Hallo Stefan,
erstmal vielen Dank für deinen Beitrag.
Ich bin in dieser Sache was Powershell angeht absolut Neuling.
Was ich jetzt gemacht habe ist, dass ich den Code on Powersehll eingefügt habe.
Ichbin aber leider jetzt absolut planlos was die weitere Vorgehensweise ist.
Könntest du mir da evtl. behilflich sein?
Ich will mir hier nicht alles machen lassen und der code ist ja schon kopiert jedoch bräuchte ich jetzt eine kleine Anweisung wie ich weiter vorgehen muss.
Oder ist es jetzt so, dass ich eine weitere Option habe, wenn ich die Dateien in den anderen Ordner kopiere?
Also das ich eine Asuwahlmöglichkeit nach dem Code habe?
Sorry aber für mich ist dies eben absolutes Neuland
Ich danke dir nochmals.
Gruß
Jörg
Hallo Stefan,
erstmal vielen Dank für deinen Beitrag.
Ich bin in dieser Sache was Powershell angeht absolut Neuling.
Was ich jetzt gemacht habe ist, dass ich den Code on Powersehll eingefügt habe.
Ichbin aber leider jetzt absolut planlos was die weitere Vorgehensweise ist.
Könntest du mir da evtl. behilflich sein?
Ich will mir hier nicht alles machen lassen und der code ist ja schon kopiert jedoch bräuchte ich jetzt eine kleine Anweisung wie ich weiter vorgehen muss.
Oder ist es jetzt so, dass ich eine weitere Option habe, wenn ich die Dateien in den anderen Ordner kopiere?
Also das ich eine Asuwahlmöglichkeit nach dem Code habe?
Sorry aber für mich ist dies eben absolutes Neuland
Ich danke dir nochmals.
Gruß
Jörg
Re: Dateien kopieren / nur ersetzen wenn gleicher Name und Größe
Hi Jörg, was genau verstehst du nicht, steht doch alles da???
Oder kannst du kein Englisch und hast auch keinen online Übersetzer? >>> DeepL
Und unsere FAQs aus meiner Signatur hast du dir auch nicht angeschaut? >>> Wie einen Button erstellen?
Also, extra für dich noch einmal langsam....
- speichere den Code aus "CODE: SELECT ALL"
in einer Textdatei namens "COPY.ps1"
im TC-Ordner
- Erstelle einen neuen Button in der Buttonbar.
( siehe viewtopic.php?p=390697#p390697 )
-> Menü "Konfigurieren > Buttonbar ändern..."
-> Im "Buttonbar ändern"-Dialog, klicke auf [Anfügen], dann fülle ihn aus wie folgt:
------------------------------------------
Kommando: PowerShell -noexit
Parameter: 'c:\Dein Pfad zu\TotalCommander\COPY.ps1' '%L' '%T'
Startpfad: <leer lassen>
Icondatei: powershell
Tooltip : COPY.ps1 '%L' '%T'
------------------------------------------
- Erstelle ein Backup deiner Daten und versuche es erstmal mit einigen wenigen
- Wähle das Ziel aus
- Gehe ins andere TC-Fenster
- Wähle deine Dateien aus (oder suche nach ihnen)
- Klicke auf den neuen Button
- Die Dateien sollten wie gewünscht kopiert werden.
Bitte beachte, das Dateien mit selber Größe nicht unbedingt identisch sein müssen.
- Wenn alles funktioniert , kannst du das "NEU" aus dem Code entfernen, und auch das "-NoExit" kann dann weg.
Noch Fragen?
Oder kannst du kein Englisch und hast auch keinen online Übersetzer? >>> DeepL
Und unsere FAQs aus meiner Signatur hast du dir auch nicht angeschaut? >>> Wie einen Button erstellen?
Also, extra für dich noch einmal langsam....
- speichere den Code aus "CODE: SELECT ALL"
in einer Textdatei namens "COPY.ps1"
im TC-Ordner
- Erstelle einen neuen Button in der Buttonbar.
( siehe viewtopic.php?p=390697#p390697 )
-> Menü "Konfigurieren > Buttonbar ändern..."
-> Im "Buttonbar ändern"-Dialog, klicke auf [Anfügen], dann fülle ihn aus wie folgt:
------------------------------------------
Kommando: PowerShell -noexit
Parameter: 'c:\Dein Pfad zu\TotalCommander\COPY.ps1' '%L' '%T'
Startpfad: <leer lassen>
Icondatei: powershell
Tooltip : COPY.ps1 '%L' '%T'
------------------------------------------
- Erstelle ein Backup deiner Daten und versuche es erstmal mit einigen wenigen
- Wähle das Ziel aus
- Gehe ins andere TC-Fenster
- Wähle deine Dateien aus (oder suche nach ihnen)
- Klicke auf den neuen Button
- Die Dateien sollten wie gewünscht kopiert werden.
Bitte beachte, das Dateien mit selber Größe nicht unbedingt identisch sein müssen.
- Wenn alles funktioniert , kannst du das "NEU" aus dem Code entfernen, und auch das "-NoExit" kann dann weg.
Noch Fragen?