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

Kopieren von Dateien und Zuordnung dieser mittels erster vier Stellen des Dateinamens

Frage Microsoft Windows Userverwaltung

Mitglied: ScriptingDAU

ScriptingDAU (Level 1) - Jetzt verbinden

06.01.2015, aktualisiert 18:12 Uhr, 1731 Aufrufe, 18 Kommentare, 2 Danke

Hallo zusammen,

bislang war ich immer stiller Mitleser, konnte jedoch zu meinem aktuellen Problem keine Lösung finden und wende mich deswegen einmal an euch.

Die Ausgangssituation ist folgende:

Wir haben Filmdaten (.mpg) auf externen HDDs, diese haben Dateinamen bestehend aus Zahlen und Buchstaben.
Beispiel: 0123abc1234.mpg
Anhand der ersten 4 Stellen des Dateinamens soll die Datei in einen Ordner kopiert werden, welcher als Ordnernamen die ersten 4 Stellen des Dateinamens trägt.
0123abc1234.mpg soll also in den Ordner 0123 kopiert werden.

Leider bin ich nicht besonders Scriptbewandert, und würde mich freuen wenn mir jemand helfen kann.

Hier habe ich schon nachgesehen, leider ist es mir nicht möglich gewesen, dass Script für meine Bedürfnisse abzuändern:
http://suche.administrator.de/forum/Mit-welchem-Batchbefehl-kann-ich-zw ...

Kurzzusammenfassung:
Filmdateien mit eindeutigen Dateinamen, anhand der ersten vier Stellen des Namens soll in einen entsprechenden Ordner verschoben werden.


Vielen vielen Dank vorab.

Edit: Dateien sollen kopiert werden, nicht verschoben (gemoved) wie ich vorher geschrieben hatte.
Mitglied: Doskias
06.01.2015 um 15:36 Uhr
Hi ScriptingDau (toller Name :D)

Zuerst einmal bitte konkretisieren. In der Überschrift schreibst du "kopieren" etwas später "gemoved".

Anhand von Powershell der Unterschied:
copy-item: kopieren
move-item: verschieben

Was soll denn nun passieren. Kopieren oder verschieben?

Gruß
Doskias
Bitte warten ..
Mitglied: ScriptingDAU
06.01.2015 um 15:40 Uhr
Hey Doskias,

ja der Name war irgendwie passend :D

Es soll kopiert werden, wenn die Datei existiert soll die existierende Datei zusätzlich in einen Ordner namens "Historisch" verschoben werden.
Wollte die Frage so kurz halten wie nur möglich, das verschieben bekomme ich evtl. selber hin. Wichtiger ist mir die Abfrage nach dem Dateinamen um daraufhin die Datei dem richtigen Ordner zuzuweisen.

Ich editiere oben mal.
Bitte warten ..
Mitglied: Vancouverona
06.01.2015, aktualisiert um 16:37 Uhr
SetLocal EnableDelayedExpansion
For %%a in (*.mpg) DO (
Set MPGName=%%~na
copy "%%a" "%MPGName:~0,4%\%%~nxa"
)

Sollte Dir genug Input geben, um Dein Problem lösen zu können.

Lies dir dazu mal
Help For
Help Set und
Help If
Bitte warten ..
Mitglied: ScriptingDAU
06.01.2015, aktualisiert um 16:43 Uhr
Habe im Netz folgendes gefunden und schon ein wenig editiert, ich suche hier nach Dateien die mit 1234 beginnen... aber leider wird immer nur die erste Datei kopiert.
@echo off

cls

set SRC=c:\Test
set DEST=c:\ziel

for /f "tokens=4" %%i in ('dir %SRC% ^| find "1111" ') do (


echo copy %SRC%\%%i %DEST%\%%i

copy %SRC%\%%i %DEST%\ >nul

if %errorlevel% EQU 0 (
echo Datei %%i erfolgreich kopiert
) else (
echo FEHLER beim Verarbeiten der Datei %%i
)
)
)
pause
Bitte warten ..
Mitglied: Vancouverona
06.01.2015 um 16:42 Uhr
Packe deine Lösung mal in eine

Setlocal EnableDelayedExpansion

EndLocal

"Klammer"

und benutze für die innere Schleife ! an Stelle von %


Oder bastle mal mit meiner Lösung weiter.
Bitte warten ..
Mitglied: Doskias
LÖSUNG 06.01.2015, aktualisiert 20.01.2015
Versuchs mal mit Powershell:

copy-item -path "Pfad\123*" -destination "zielpfad\" -force -recurse

Hat zumidnest in meinem Test alle Dateien die mit 123 begonnen haben und im Ursprungspfad lagen in den Zielpfad kopiert.

oder als move:

move-item -path "Pfad\123*" -destination "zielpfad\" -force
Bitte warten ..
Mitglied: ScriptingDAU
06.01.2015 um 17:03 Uhr
Sieht aktuell so aus:

@echo off
SetLocal EnableDelayedExpansion

set SRC=c:\Test
set DEST=c:\ziel
For %%a in (%SRC%\*.mpg) DO (
echo %%a
Set MPGName=%%~na
echo "%%a" "%MPGName:~0,4%\%~nxa"
)
EndLocal

pause

Bricht aber offensichtlich bei der For-Schleife direkt ab

Ich glaube ich bin auf dem richtigen Weg, aber ganz richtig ist es noch nicht.
Bitte warten ..
Mitglied: 114757
06.01.2015, aktualisiert um 17:29 Uhr
Moin,
hatten wir genau hier:
http://www.administrator.de/forum/viele-dateien-automatisch-in-bestehen ...

für dein Beispiel angepasst:
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "quelle=C:\temp\quelle" 
03.
set "ziel=C:\temp\ziel" 
04.
for /f "delims=" %%a in ('dir /B /A-D "%quelle%\*.mpg" 2^>nul') DO @( 
05.
    set "name=%%~na" 
06.
    set "folder=!name:~0,4!" 
07.
    if not exist "%ziel%\!folder!\" md "%ziel%\!folder!" 
08.
    copy "%quelle%\%%a" "%ziel%\!folder!\" 
09.
)
Gruß jodel32
Bitte warten ..
Mitglied: ScriptingDAU
06.01.2015 um 17:11 Uhr
Zitat von Doskias:

Versuchs mal mit Powershell:

> copy-item -path "Pfad\123*" -destination "zielpfad\" -force -recurse

Hat zumidnest in meinem Test alle Dateien die mit 123 begonnen haben und im Ursprungspfad lagen in den Zielpfad kopiert.

oder als move:

> move-item -path "Pfad\123*" -destination "zielpfad\" -force

Funktioniert tadellos, DANKE!

Habe ich die Möglichkeit jetzt doch noch, wie in meinem ersten Kommentar geschrieben, wenn eine Datei im Zielordner vorhanden ist, diese dann vorab in den Ordner "Historisch" zu verschieben?


Ihr seid die besten, krass wie ihr alle mithelft. DANKE!
Bitte warten ..
Mitglied: ScriptingDAU
06.01.2015, aktualisiert um 17:19 Uhr
Zitat von 114757:

Moin,
hatten wir genau hier:
http://www.administrator.de/forum/viele-dateien-automatisch-in-bestehen ...

für dein Beispiel angepasst:
01.
> @echo off & setlocal enabledelayedexpansion 
02.
> set "quelle=C:\Quelle" 
03.
> set "ziel=D:\Ziel" 
04.
> for /f "delims=" %%a in ('dir /B /A-D "%quelle%\*.mpg" 2^>nul') DO @( 
05.
>     set "name=%%~na" 
06.
>     set folder=!name:~0,4! 
07.
>     if not exist "%ziel%\!folder!\" md "%ziel%\!folder!" 
08.
>     copy "%quelle%\%%a" "%ziel%\!folder!\" 
09.
 
10.
 
11.
> ) 
12.
> 
Gruß jodel32



Habe nur den Pfad mal für mich angepasst, auf C:\Test und C:\Ziel, allerdings bricht er in der For-Schleife wieder ab.. magst du nochmal drübersehen?
Danke!
Bitte warten ..
Mitglied: 114757
LÖSUNG 06.01.2015, aktualisiert um 18:12 Uhr
Zitat von ScriptingDAU:
Habe nur den Pfad mal für mich angepasst, auf C:\Test und C:\Ziel, allerdings bricht er in der For-Schleife wieder ab.. magst
du nochmal drübersehen?
Geht einwandfrei, du musst es falsch kopiert haben !!
Bitte warten ..
Mitglied: 114757
LÖSUNG 06.01.2015, aktualisiert um 18:12 Uhr
übrigens macht folgendes Powershell-Script das alles ebenfalls automatisch:
01.
$quelle = "C:\quelle" 
02.
$ziel = "C:\\ziel" 
03.
gci "$quelle\*.mpg" -recurse | %{ 
04.
    $targetfolder = "$ziel\$($_.BaseName.SubString(0,4))"  
05.
    if(!(Test-Path $targetfolder)){md $targetfolder -Force | out-null} 
06.
    copy-item $_.FullName -Destination $targetfolder -Force 
07.
}
Bitte warten ..
Mitglied: ScriptingDAU
06.01.2015 um 18:12 Uhr
Mein Fehler, nun klappt es.

Ich bedanke mich!
Bitte warten ..
Mitglied: ScriptingDAU
20.01.2015 um 11:17 Uhr
Hallo Leute,

ich muss das Thema nochmal aufgreifen.

Das Script funktioniert soweit tadellos, allerdings ist es mir nicht möglich das Script um folgenden Punkt zu erweitern:

Wenn der Film bereits in dem Ordner existiert, soll er in den Unterordner "Historisch" verschoben werden und an den Dateinamen das Datum + Stunde angehangen werden.
Kann mir irgendwer helfen? Ich verzweifle mal wieder.

Hier das Ausgangsscript:

@echo off & setlocal enabledelayedexpansion

rem Zuerst die Quelle angeben z.B. externe Festplatte
set "quelle=C:\Quelle"

rem Hier das Ziel angeben, allerdings nur den Unterordner
set "ziel=C:\Ziel"

for /f "delims=" %%a in ('dir /B /A-D "%quelle%\*.mpg" 2^>nul') DO @(
set "name=%%~na"
set folder=!name:~0,4!
if not exist "%ziel%\!folder!\" md "%ziel%\!folder!"
copy "%quelle%\%%a" "%ziel%\!folder!\"
)

pause
Bitte warten ..
Mitglied: 114757
LÖSUNG 20.01.2015, aktualisiert um 19:01 Uhr
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "quelle=C:\quelle" 
03.
set "ziel=C:\ziel" 
04.
for /f "delims=" %%a in ('dir /B /A-D "%quelle%\*.mpg" 2^>nul') DO @( 
05.
    set "name=%%~na" 
06.
    set "folder=!name:~0,4!" 
07.
    if not exist "%ziel%\!folder!\" md "%ziel%\!folder!" 
08.
    if exist "%ziel%\!Folder!\%%~nxa" ( 
09.
       if not exist "%ziel%\!folder!\Historisch" md "%ziel%\!folder!\Historisch" 
10.
       move "%ziel%\!Folder!\%%~nxa" "%ziel%\!folder!\Historie\!name!_%date%_%time:~0,2%%%~xa" 
11.
    )  
12.
    copy "%quelle%\%%a" "%ziel%\!folder!\" 
13.
)
Bitte warten ..
Mitglied: ScriptingDAU
20.01.2015 um 13:59 Uhr
Sieht schon extreeem gut aus, hab es mit meinem Script-Spatzenhirn auch nachvollziehen können, allerdings muss das Verzeichnis "Historisch" automatisch ein Unterordner werden.

Beispiel:

In Ordner 9336 liegt die Datei 9336abc und es kommt nun eine neuere Datei 9336abc die kopiert werden soll.
Dann soll die im Ordner 9336 ein Ordner "Historisch" gemacht werden in welche die alte Datei verschoben wird, damit die neuere in 9336 kopiert werden kann.

Also muss da irgendwas mit md hin, aber es will nicht voreinander passen bei mir..

Hilfeeee.
Bitte warten ..
Mitglied: 114757
LÖSUNG 20.01.2015, aktualisiert um 22:55 Uhr
Na wenns weiter nix is, oben ergänzt
p.s....arbeite mal an deinem IQ jetzt hab ich schon so viele Vorlagen geliefert, damit hätte das eigentlich auch ein DAU schaffen sollen.
Bitte warten ..
Mitglied: ScriptingDAU
20.01.2015 um 22:57 Uhr
Du kannst mir gerne Nachhilfe in Sachen IQ geben :P
Ich versuchs immer nachzuvollziehen, aber die ganzen Parameter und Co überfordern mich immens.

Nochmals vielen Dank!
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
C und C++
Dateien in Ordner kopieren anhand vom Teil eines Dateinamen (22)

Frage von onlyforu8373 zum Thema C und C ...

Batch & Shell
Dateien kopieren die nicht mehr verändert werden? (10)

Frage von pbelcl zum Thema Batch & Shell ...

Windows Server
Zuordnung von Netzlaufwerken mit Hilfe von Batch-Dateien (4)

Frage von doc-jochim zum Thema Windows Server ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...