Top-Themen

Aktuelle Themen (A bis Z)

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 Batch Ordner mit Dateinamen erstellen und verschieben

Mitglied: Tolgi

Tolgi (Level 1) - Jetzt verbinden

09.04.2010 um 09:34 Uhr, 18484 Aufrufe, 10 Kommentare

Brauche Hilfe fur eine Ordnerorganisation

Hallo, folgendes Problem habe ich mit Batchprogrammierung,

Ich habe eine Festplatte mit etwa 500 Avi Files und 500 jpg Files.

Dateiname.avi sowie Dateiname.jpg sind jeweils bis auf die Endung exakt identisch.

Nun brauche ich ein Skript und für jeden Avi File einen Ordner mit dem Namen "Dateiname" erstellt und die Dateiname.avi und Dateiname.jpg in diesen Ordner verschiebt.

Beispiel:
RedBull X-Fighters 2009 Mexico AC3.avi und
RedBull X-Fighters 2009 Mexico AC3.jpg sollen beide in den Ordner
RedBull X-Fighters 2009 Mexico AC3 verschoben werden (Ordner muss vorher erstellt werden).

Wäre schn wenn mir da jemand helfen knnte da sich meine Batch kenntnisse echt in grenzen halten.

Vielen Dank im Vorraus für eure Super Hilfe im Forum.
Mitglied: bastla
09.04.2010, aktualisiert 22.06.2013
Hallo Tolgi!

Dazu sollte eigentlich
for %i in (D:\Videos\*.avi) do @(md "%~dpi%~ni" && (move "%i" "%~dpi%~ni\" & move "%~dpni.jpg" "%~dpi%~ni\"))
direkt an der Eingabezeile genügen, wobei durch das jeweilige "echo" die Befehle zunächst nur angezeigt werden - wenn Du (alle 3) "echo" weg lässt, werden die Befehle auch ausgeführt.

Solltest Du einen Batch daraus machen wollen, einfach jedes vorkommende Prozentzeichen verdoppeln ...

Noch ein Hinweis: Wenn es (vermutlich) ohnehin nur die ".avi" und die ".jpg" zu einem bestimmten Namen gibt, oder, falls auch noch andere Dateitypen vorhanden wären, diese mit verschoben werden sollen, würde sich die Zeile auf
for %i in (D:\Videos\*.avi) do @(md "%~dpi%~ni" && move "%~dpni.*" "%~dpi%~ni\")
reduzieren.

Grüße
bastla
Bitte warten ..
Mitglied: Tolgi
09.04.2010 um 10:06 Uhr
Super, danke. Hat auf anhieb geklappt!
Damit hast du mir nen paar Stunden arbeit erspart. Danke Danke Danke
Bitte warten ..
Mitglied: 5t8d1e
09.04.2010 um 10:48 Uhr
Hallo, Tolgi
quick und dirty sieht sollte es so aussehen
01.
SET ziel=C:\temp\backup\
02.
SET quelle=c:\temp\Test_PS
03.

04.
for /f "delims==" %a in ('dir /b "%quelle%"') do if not exist "%ziel%%~na" mkdir "%ziel%%~na"  &&   xcopy "%~na.*" "%ziel%%~na"
grüße
Torsten

edit: aus den xcopy nen move machen!
Bitte warten ..
Mitglied: bastla
09.04.2010, aktualisiert 15.08.2013
@5t8d1e

So richtig quick wird's vermutilch nicht werden, da bei Deinem Ansatz kopiert und nicht, wie gewünscht, verschoben wird - was sich bei 500 .avi-Files etwas hinziehen könnte ...

... hinsichtlich des Codes ginge es aber doch noch etwas quicker - "xcopy" erstellt sich den Zielordner nämlich selbst (wird aber vermutlich nicht allzuviel zu tun bekommen, da ein "dir /b" - ohne zusätzliches "/s", was hier aber eher nicht gefrag sein wird - keinen vollständigen Pfad liefert; daher müsstest Du den Pfad schon auch mit angeben - oder, was meist einfacher ist, vorweg per "pushd" in den Quell-Ordner wechseln).

Deine Zeile 4 könnte auf Basis dieser Überlegungen (wenn es beim Kopieren bleiben soll) etwa so aussehen:
for /f "delims=" %a in ('dir /b "%quelle%\*.avi"') do xcopy "%quelle%\%~na.*" "%ziel%%~na\"
Grüße
bastla

[Edit] "edit:" zu spät gesehen -das "Quell-Pfad-Problem" gäbe es aber auch bei "move" ... [/Edit]
Bitte warten ..
Mitglied: 5t8d1e
09.04.2010 um 11:39 Uhr
Hallo Bastla

Bei den Code wird natürlich ausgegangen man im Verzeichnis der Quelle ist. Deswegen quick und dirty. Wenn ich sowas sauber haben will würde ich nen PS-script irgenwie vorziehen


Grüße
Torsten

PS.:das xcopy auch Zielverzeichnise erstellt war mir noch net so bewußt . Wieder was gelernt

PPS.: nehmt ps1 verdammt cmd/bat!
Bitte warten ..
Mitglied: bastla
09.04.2010 um 12:01 Uhr
Hallo 5t8d1e!
Bei den Code wird natürlich ausgegangen man im Verzeichnis der Quelle ist.
Wenn ich noch etwas den "advocatus diaboli" geben darf: Dann wäre Deine Zeile 2 unnötig ...
Aber vielleicht magst Du ja die PS-Variante (zur Abrundung des Ganzen) noch hier reinstellen ...

Grüße
bastla
Bitte warten ..
Mitglied: 5t8d1e
09.04.2010 um 14:10 Uhr
Ahoi,

*hüstel* naja die zeile 2 sieht halt besser aus ;-=

hier das Script für PS und es ist kein Einzeiler, weil ich die nicht besonders mag
01.
$quelle = "C:\Temp\test_PS"
02.
$ziel = "C:\Temp\Backup"
03.

04.
#neues Array mit Dateiinfos aus Quelle
05.
$quelldateien = @(Get-ChildItem $quelle)
06.

07.
foreach ($datei in $quelldateien) {
08.

09.
#Dateiname ohne Extension erstellen    
10.
    $basisname =  (split-path $Datei -leaf).split(".")[0]
11.

12.
#Testen ob Zielpfad vorhanden ist, ansonsten erstellen
13.
    IF ( Test-Path $ziel\$basisname )
14.
        {} 
15.
    else 
16.
    { New-Item $ziel\$basisname -type directory }
17.

18.
#Testen ob Zieldatei bereits vorhanden ist, ansonsten erstellen
19.
    IF ( Test-Path $ziel\$basisname\$datei )
20.
        { Write-Host "Datei $datei bereits îm Zielverzeichnis vorhanden, wird nicht verschoben" }
21.
    else
22.
        { Move-Item -Passthru $datei.Fullname -Destination "$ziel\$basisname\$Datei" }
23.
}
ja ich erwarte Kritik!
Grüße Torsten
Bitte warten ..
Mitglied: Tobmoc
22.06.2013 um 00:11 Uhr
Ich muss hier ein GANZ KLARES DANKE sagen! Ich baue gerade Auktionen und muss über 4000 Dateien sortieren. Ohne euer "Kung-Fu" wäre das einige Wochen arbeit. Somit habe ich das Heute inkl. Photoshop umrechen, anpassen, zuschneiden usw usw in unter 3 Stunden geschaft! Batch rulez!!! DANKE MAN! Wenne ma in Hattingen bis, sach bescheid, das erste Pilz geht auf mich ;)
Bitte warten ..
Mitglied: ponkie
11.07.2013 um 23:45 Uhr
Hallo Thorsten,
dank Deines Scripts kann ich meine Dateien, die nach "Vorname Nachname" sortiert sind, in Ordner mit der Bezeichnung "Nachname Vorname" kopieren.
Die Zeile schaut dann so aus: $basisname = (split-path $Datei -leaf).split(" ")[1,0]
Absolut perfekt wäre es für mich, wenn ich ein Komma und ein Leerzeichen zwischen Nachname und Vorname einfügen könnte.
Ist mir bisher nicht gelungen. Vielleicht hast Du eine Idee.
Vielen Dank
Ponkie
Bitte warten ..
Mitglied: 5t8d1e
15.08.2013, aktualisiert um 20:34 Uhr
Hallo Ponkie,

Ich war lange nicht mehr online und habe erste jetzt dein Post gesehen.
Da ich gerade Zeit, Lust und Langeweile habe, habe ich das Skript ein bissl umgeschrieben
Du kannst das Skript so aufrufen und die Werte vom Parameter übernehmen oder in der Powershell mit neuen Werten aufrufen.
Bsp.: move-Files-custom.ps1 -Source c:\blub -Destination e:\bla -findstring foo -replacestring bar

01.
#move-Files-custom.ps1
02.
Param (
03.
[String]$Source = "Z:\P0w3rsh3ll\Administrator.de\Ponkie\Source",
04.
[String]$Destination = "Z:\P0w3rsh3ll\Administrator.de\Destination" ,
05.
[String]$findstring = ' ' ,
06.
[String]$replaceString = ', '
07.
)
08.

09.
#get-all Files
10.
#Powershell V3
11.
[array]$myFiles = Get-ChildItem -Path $Source -File
12.
#Powershell V2
13.
#[array]$myFiles = Get-ChildItem -Path $Source | where { $_.PSisContainer -ne $true }
14.
foreach ( $file in $myFiles ) {
15.
    [string]$Basename = $file.Basename
16.
    [string]$newFileName = $file.Name -replace($findstring,$replaceString)
17.
#Check for Destinationpath, if not exist create new Directory
18.
    if ( ( Test-Path "$Destination\$Basename" ) -ne $true )
19.
        { New-Item -Path $Destination\$Basename -type directory }
20.
#Move File with new Filename, if not exist on destinaton
21.
    if ( Test-Path $Destination\$Basename\$newFileName )
22.
        { Write-Host "File $newFileName already exist, no further action" }
23.
    else
24.
        {  Move-Item -Passthru $file.Fullname -Destination "$Destination\$Basename\$newFileName" }
25.
}
In der Hoffnung dass es dir weiter hilft, wie immer alles quick und dirty!

Der Torsten wars!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch: Batch in batch in cfg schreiben
gelöst Frage von pixelBfBatch & Shell2 Kommentare

Hayy, ich bin neu hier im forum:)) Meine frage: Kann ich eine batch schreiben die was in eine batch ...

Batch & Shell
Batch - Kopierjob
Frage von Goldenone95Batch & Shell8 Kommentare

Hallo Community, leider weiß ich bezüglich einer Batch-Datei zum Kopieren und Ersetzen einer Datei in einem anderen Verzeichnis nicht ...

Batch & Shell
Batch - Variablen
gelöst Frage von Marlon1Batch & Shell2 Kommentare

Hallo, Ich habe eine Frage zu Variablen. Und zwar ob es irgendwie geht das Batch mit ein IF Befehl ...

Batch & Shell
Kopfschmerzen (Batch)
gelöst Frage von clragonBatch & Shell4 Kommentare

"" " Kann syntaktisch an dieser Stelle nicht verarbeitet werden Ich sterbe während die Flammen meiner Rage mich innerlich ...

Neue Wissensbeiträge
Windows 7
Updategängelung auf Windows 10, die zweite
Information von Penny.Cilin vor 1 TagWindows 7

Hallo, da Windows 7 im kommenden Jahr nicht mehr supportet wird, werden Nutzer von Window 7 home premium wieder ...

Internet
EU-Urheberrechtsreform: Zusammenfassung
Information von Frank vor 4 TagenInternet1 Kommentar

Auf golem.de gibt es eine Analyse von Friedhelm Greis, der das Thema EU-Urheberrechtsreform gut und strukturiert zusammenfasst. Zwar haben ...

Microsoft Office

Office365 Schwachstellen bei Sicherheit und Datenschutz

Information von Penny.Cilin vor 5 TagenMicrosoft Office7 Kommentare

Auf Heise+ gibt es einen Artikel bzgl. Office365 Schwachstellen. Das ist noch ein Grund mehr seine Daten nicht in ...

Sicherheit
Schwachstellen in VPN Clients
Tipp von transocean vor 7 TagenSicherheit2 Kommentare

Moin, es gibt Sicherheitslücken bei VPN Clients namhafter Hersteller, wie man hier lesen kann. Gruß Uwe

Heiß diskutierte Inhalte
Windows Installation
Windows10 Home Neuinstallation - Raketentechnik
Frage von spacyfreakWindows Installation12 Kommentare

"Kannst du den Rechner von der Tante von WindowsXP auf Windows10 Home upgraden" haben sie gefragt? "Sicher, was kann ...

Virtualisierung
Unix System virtualisieren
Frage von BananenmeisterVirtualisierung10 Kommentare

Hallo Zusammen, Ich möchte gerne eine Virtualisierungs-Software auf meinem kleinen ML Server installieren um einige Unix Systeme zu virtualisieren. ...

Windows 10
Windows 10 verwendet FritzBox per IPv6 als DNS-Server an Stelle des per DHCP vergebenen DNS-Servers
Frage von Datax87Windows 1010 Kommentare

Hallo, ich habe ein kleines Problem mit der Namensauflösung (DNS) unter Windows 10. Mir ist heute aufgefallen, dass ich ...

Netzwerkmanagement
Konfiguration von IPv6 in einer Domäne mit DHCP
Frage von gnoovyNetzwerkmanagement10 Kommentare

Hi Zusammen, ich bin gerade etwas am verzweifeln. Ich habe eine Testumgebung aufgebaut, um mich in das Thema IPv6 ...