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

Dateien in einem Ordner Suchen, Umbenennen und Entpacken.

Frage Entwicklung Batch & Shell

Mitglied: NopiSoul

NopiSoul (Level 1) - Jetzt verbinden

23.06.2014, aktualisiert 02.07.2014, 1883 Aufrufe, 20 Kommentare

Hallo Leute,

Ich möchte Archive in einem Ordner suchen, deren Namen nach einem Bestimmten Schema ändern, und dann Danach in einen anderen Ordner enpacken. Habe aber absolut keine ahnung, wie ich das machen soll.

Also, mal schritt für schritt.

--> Umbenennen:
Die Archive haben alle unterscheidliche Namen, Unterschiedlich lang, und der Bereich, den ich Ändern möchte ist auch meist unterschiedlich lange, aber Klar definiert durch "[ ]".

Beispiele.:
Datei1: [Kurzername] Name.rar
Datei2: [Ich bin ein Langer Name] Habe auch noch nen Längeren Text hier.rar
Datei3: [Ich bin ein Nerfiger ( Name ) mit anderen -- Zeichen] Aber ansonsten Kurz.rar

Und möchte nun mal hierbei das in den Eckigen Klammern Weg haben.

--> Entpacken:
Ich nehme meist rar, kann aber auch gerene ein anderes Brogramm nutzen, dass rar archive entpacken kann.
Nun, das Entpacken soll von dem Ordner "C:\Downloads\Mangas\" in dem die Archive und der Batch ist, in ein anderen Ordner "F:\Mangas\<Datum>\<Archivname>\" entpackt werden.

Freue mich über Zahlreiche Hilfe.

Mit freundlichen Grüßen NopiSoul

P.S.: Wenn das nicht über Batch geht, wie bekomm ich es dann gebacken?

_________________________________________________________________

Lösung:

01.
$pathArchives = "D:\Users\Roman\Downloads\Manga"  
02.
$pathExtract = "F:\Manga"  
03.
$pathRAR = "C:\Program Files\WinRAR\Rar.exe"  
04.
$pathZip = "C:\Program Files\7-Zip\7z.exe" 
05.
dir $pathArchives -Filter "*.rar" | rename-item -NewName {($_.Name -replace '\[.*?\]','').Trim()} -Force -PassThru | %{$newFolder = $pathExtract+"\"+(get-date -Format 'dd.MM.yyyy')+"\"+$_.Basename+"\"; if(!(Test-Path $newFolder)){md $newFolder -Force}; start-process $pathRAR -ArgumentList "x ""$($_.FullName)"" * ""$newFolder""" -Wait -WindowStyle Hidden} 
06.
dir $pathArchives -Filter "*.zip" | rename-item -NewName {($_.Name -replace '\[.*?\]','').Trim()} -Force -PassThru | %{$newFolder = $pathExtract+"\"+(get-date -Format 'dd.MM.yyyy')+"\"+$_.Basename+"\"; if(!(Test-Path $newFolder)){md $newFolder -Force}; start-process $pathZip -ArgumentList "x ""$($_.FullName)"" ""-o$newFolder""" -Wait -WindowStyle Hidden}

Mitglied: colinardo
LÖSUNG 23.06.2014, aktualisiert 29.06.2014
Hallo NopiSoul,
wenn dir Powershell nichts ausmacht, z.B. so (mit Verwendung des Kommandozeilenprogramms rar):
01.
$pathArchives = "C:\Downloads\Mangas" 
02.
$pathExtract = "F:\Mangas" 
03.
$pathRAR = "C:\Program Files\WinRAR\Rar.exe" 
04.
dir $pathArchives -Filter "*.rar" | rename-item -NewName {($_.Name -replace '\[.*?\]','').Trim()} -Force -PassThru | %{$newFolder = $pathExtract+"\"+(get-date -Format 'dd.MM.yyyy')+"\"+$_.Basename+"\"; if(!(Test-Path $newFolder)){md $newFolder -Force}; start-process $pathRAR -ArgumentList "e ""$($_.FullName)"" * ""$newFolder""" -Wait -WindowStyle Hidden}
Grüße Uwe

p.s. mit Batch geht das auch, aber darauf hab ich grad kein Bock
Bitte warten ..
Mitglied: NopiSoul
24.06.2014 um 17:33 Uhr
So wie ich das verstanden habe, macht es nur die Sonderzeichen raus oder?

Ich wollte jedoch, dass es den Part der [] entfernt.

[Kurzername] Name.rar ---> Name.rar
Bitte warten ..
Mitglied: colinardo
24.06.2014 um 17:35 Uhr
Zitat von NopiSoul:

So wie ich das verstanden habe, macht es nur die Sonderzeichen raus oder?
falsch verstanden, macht nur alles innerhalb und inklusive der [] weg
Bitte warten ..
Mitglied: NopiSoul
24.06.2014 um 17:39 Uhr
Dann bedanke ich mich mal, das ist genau was ich wollte, muss ich nur noch herausbekommen, wie ich das nun zum laufen bekomme, mit Powershell kenn ich mich nicht aus.
Bitte warten ..
Mitglied: colinardo
LÖSUNG 24.06.2014, aktualisiert 29.06.2014
Zitat von NopiSoul:
mit Powershell kenn ich mich nicht aus.

Anleitung: Wie starte ich Powershell-Scripte
  • Zuerst speicherst man den Code in einer Textdatei mit der Endung .ps1.
  • Wenn man zum ersten mal Powershell-Scripte ausführt, musst man einmalig vorher noch das Ausführen von Scripten im User-Account freischalten. Dazu öffnet man eine Powershell-Konsole und gibt dort den Befehl Set-ExecutionPolicy RemoteSigned -Force ein. Um diese Policy für alle User auf dem Rechner zu setzen muss man diesen Befehl in einer Powershell-Konsole mit Admin-Rechten starten. Noch ein Hinweis für 64-Bit-Systeme: Hier sollte sowohl für die 32bit und 64Bit Variante der Powershell die Policy in einer Admin-Konsole gesetzt werden: Set-ExecutionPolicy RemoteSigned -Force; start-job { Set-ExecutionPolicy RemoteSigned -Force } -RunAs32
  • Jetzt kann das Powershell-Script in der Konsole mit Eingabe des Pfades der Scriptdatei, oder mit einem Rechtsklick auf die Script-Datei :Mit Powershell ausführen gestartet werden.
Bitte warten ..
Mitglied: NopiSoul
24.06.2014, aktualisiert 25.06.2014
Und nochmals ein Großes Dankeschön :D
Bitte warten ..
Mitglied: NopiSoul
25.06.2014 um 15:21 Uhr
Leider Funktioniert es noch nicht, es Startet, und schließt gleich wieder, sonnst passiert nix.
Bitte warten ..
Mitglied: colinardo
25.06.2014, aktualisiert um 15:31 Uhr
das sind die typischen Powershell-Anfängerfehler. Öffne eine Powershell-Konsole und überprüfe dort nochmal mit Get-ExecutionPolicy ob die Policy tatsächlich geändert wurde ... Wenn nicht nochmal Set-ExecutionPolicy RemoteSigned eingeben und dann das Script mit Eingabe des kompletten Pfades ausführen.
Pfade hast du hoffentlich im Script entsprechend angepasst. Geht hier ansonsten einwandfrei !
Bitte warten ..
Mitglied: NopiSoul
25.06.2014 um 20:28 Uhr
Nachdem ich ihn im Schellfenster nach dem Prüfen, mit Kompletten Pfad gestartet habe, kommt nur eine Zeile, dass er es startet, nichts passiert sonnst.
Bitte warten ..
Mitglied: colinardo
25.06.2014, aktualisiert um 21:34 Uhr
das Script gibt keine Ausgabe aus, das läuft im Hintergrund ab. Vermutlich hast du den Pfaden einen Backslash am Ende hinzugefügt, das darfst du hier nicht machen!
Bei meinen Tests habe ich die Original Konsolenversion des Programms WinRAR benutzt, die Syntax gilt hier also fûr diese Version!
Läuft hier wie gesagt einwandfrei, ich mach das ja nicht zum ersten mal wie du meinem Profil entnehmen kannst - irgendwas machst du hier sonst noch falsch...oder du hast eine vollkommen veraltete PS-Version, OS ?
Bitte warten ..
Mitglied: NopiSoul
29.06.2014, aktualisiert um 18:16 Uhr
Ich habe das Problem nun entdeckt. Nachdem ich erkannt habe, dass die Archive .zip-Files waren, und ich die bearbeitung nochmal mit einem *.zip machen lies, hatt es dann gearbeitet, jedoch kam nur eine/mehrere Fehlermeldungen.

01.
Rename-Item : Es wurde kein Parameter gefunden, der dem Parameternamen "LiteralPath" entspricht. 
02.
Bei D:\Users\User\Downloads\Manga\Entpacken.ps1:7 Zeichen:63 
03.
+ dir $pathArchives -Filter "*.zip" | %{rename-item -LiteralPath <<<<  $_.Fullname -NewName "$($_.Name -replace '\[.*?\]','')" -Force -PassThru} | %{$newFolder = $pathExtract+"\"+(get-date -Format 'dd.MM.yyyy')+"\"+$_.Basename+"\"; i 
04.
f(!(Test-Path $newFolder)){md $newFolder -Force}; start-process $pathRAR -ArgumentList "e ""$($_.FullName)"" * ""$newFolder""" -Wait -WindowStyle Hidden} 
05.
    + CategoryInfo          : InvalidArgument: (:) [Rename-Item], ParameterBindingException 
06.
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.RenameItemCommand
Bitte warten ..
Mitglied: colinardo
LÖSUNG 29.06.2014, aktualisiert um 19:18 Uhr
Powershell auf mind. Version 3.0 Updaten !! oder oben angepasste Version die jetzt auch mit PS2.0 funktioniert, benutzen ...
Bitte warten ..
Mitglied: NopiSoul
29.06.2014 um 19:18 Uhr
Ok, es Leuft jetzt soweit, dass es die Ordner erstellt, aber entpackt wurde nichts.
Bitte warten ..
Mitglied: colinardo
29.06.2014, aktualisiert um 19:27 Uhr
Was für eine rar.exe verwendest du, Pfad zu dieser korrekt angepasst? Ich habe oben geschrieben das die Syntax für die originale RAR-Konsolenversion von WinRAR angepasst ist !
Bei dieser sieht die Syntax zum extrahieren wie folgt aus:
rar.exe e "[PFAD ZUR RAR-DATEI]" * "[ZIELORDNER]"
Und damit läuft es hier einwandfrei!
Bitte warten ..
Mitglied: NopiSoul
29.06.2014 um 19:28 Uhr
Ich habe keine Gekaufte WinRar Version, sondern nutze eine Testversion, kann es daran liegen?
Bitte warten ..
Mitglied: colinardo
29.06.2014 um 19:29 Uhr
Zitat von NopiSoul:
Ich habe keine Gekaufte WinRar Version, sondern nutze eine Testversion, kann es daran liegen?
ja
Bitte warten ..
Mitglied: NopiSoul
29.06.2014 um 19:50 Uhr
Auch der kauf der WinRar Version hat nichst daran geändert, dass es nicht entpackt wird. Ordner werden erstellt, aber nicht gefüllt. Umbenennen erfolgt auch, (auch wenn das " " am anfang etwas unschön ist).
Bitte warten ..
Mitglied: colinardo
29.06.2014, aktualisiert um 19:58 Uhr
Sorry aber hier läuft es einwandfrei, du musst noch irgendwo einen Fehler machen ... oder deine RAR-Dateien sind keine RARs
(auch wenn das " " am anfang etwas unschön ist).
kein Problem ist oben angepasst.
Bitte warten ..
Mitglied: NopiSoul
29.06.2014, aktualisiert um 20:31 Uhr
Ja, habe jetzt festgestellt, das sehr offt dazwischen zips sind. und bei denen Tritt der mangel an dateien auf.
Andererseits gebe ich ihm mit
01.
dir $pathArchives -Filter "*.zip" | rename-item -NewName {($_.Name -replace '\[.*?\]','').Trim()} -Force -PassThru | %{$newFolder = $pathExtract+"\"+(get-date -Format 'dd.MM.yyyy')+"\"+$_.Basename+"\"; if(!(Test-Path $newFolder)){md $newFolder -Force}; start-process $pathRAR -ArgumentList "e ""$($_.FullName)"" * ""$newFolder""" -Wait -WindowStyle Hidden}
ja die Zips über, und er sollte sie genauso behandeln.
Bitte warten ..
Mitglied: NopiSoul
30.06.2014, aktualisiert um 22:35 Uhr
Mit Etwas herumexperimentieren habe ich nun eine Lösung gefunden.

01.
$pathArchives = "D:\Users\Roman\Downloads\Manga"  
02.
$pathExtract = "F:\Manga"  
03.
$pathRAR = "C:\Program Files\WinRAR\Rar.exe"  
04.
$pathZip = "C:\Program Files\7-Zip\7z.exe" 
05.
dir $pathArchives -Filter "*.rar" | rename-item -NewName {($_.Name -replace '\[.*?\]','').Trim()} -Force -PassThru | %{$newFolder = $pathExtract+"\"+(get-date -Format 'dd.MM.yyyy')+"\"+$_.Basename+"\"; if(!(Test-Path $newFolder)){md $newFolder -Force}; start-process $pathRAR -ArgumentList "x ""$($_.FullName)"" * ""$newFolder""" -Wait -WindowStyle Hidden} 
06.
dir $pathArchives -Filter "*.zip" | rename-item -NewName {($_.Name -replace '\[.*?\]','').Trim()} -Force -PassThru | %{$newFolder = $pathExtract+"\"+(get-date -Format 'dd.MM.yyyy')+"\"+$_.Basename+"\"; if(!(Test-Path $newFolder)){md $newFolder -Force}; start-process $pathZip -ArgumentList "x ""$($_.FullName)"" ""-o$newFolder""" -Wait -WindowStyle Hidden}


Für alle dies Brauchen, Verwendbar.

Grüße, und Gelöst.
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Microsoft Office
gelöst Per VBA im Verzeichniss dateien mit Wildcard umbenennen (4)

Frage von usenussi zum Thema Microsoft Office ...

Windows 7
gelöst Mehrere Dateien in Windows umbenennen mit Batchjob (4)

Frage von Jeduja zum Thema Windows 7 ...

VB for Applications
gelöst Einzelne Dateien in Dateiliste umbenennen durch neuen Wert (Namen) aus einer Zelle (2)

Frage von two-ak-two zum Thema VB for Applications ...

Windows 8
gelöst Benutzer kann plötzlich keine Ordner mehr umbenennen (3)

Frage von IllusionFACTORY zum Thema Windows 8 ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...