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

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, 1819 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 ..
Ähnliche Inhalte
Batch & Shell
Kopieren anhand der ersten 4 Stellen des Dateinamens
gelöst Frage von RitzratzBatch & Shell2 Kommentare

Hi, ich möchte verschiedene Dateien anhand der ersten 4 Buchstaben identifizieren und dann in unterschiedliche Netzlaufwerke speichern. Die Dateinamen ...

Batch & Shell
Powershell: Das erste Wort einer txt-Datei in zwei weiteren txt-Dateien an erster Stelle kopieren
gelöst Frage von Frank2017Batch & Shell6 Kommentare

Hallo! Versuche mit Powershell das erste Wort aus einer txt-Datei im 1. Ordner in zwei weiteren txt-Dateien im 2.Ordner ...

Linux
Script um Zeilen aus einer Datei an eine bestimmte Stelle in einer anderen Datei zu kopieren
Frage von grepper91Linux2 Kommentare

Hallo zusammen, ich habe folgendes Problem, ich habe Paketlisten die ungefähr so aussehen: ;Paket1;x86_64;;;# ;Paket2;x86_64;;;# ;Paket3;x86_64;;;# Nun habe ich ...

Datenbanken
Die ersten 2 stellen in einer Spalte ändern
gelöst Frage von crashi09Datenbanken20 Kommentare

Hallo, Ich würde gerne auf unserem SQL Server in einer Tabelle eine Spalte ändern wie folgt. Es sollen nur ...

Neue Wissensbeiträge
Sicherheit

Blackberry stirbt - Keine Updates für Priv mehr

Tipp von certifiedit.net vor 26 MinutenSicherheit

Blackberry wird zu einer 08/15 Firma und geht wohl mehr und mehr den Weg, den HTC schon ging. Von ...

Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 107 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 2 TagenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 2 TagenInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell20 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless10 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Router & Routing
Wieso kann ich den UPD 7000-9000 nicht freigeben?
Frage von Jayk0bRouter & Routing8 Kommentare

Router: Telekom W 723V Ports: UDP 7000-9000 Können nicht frei gegeben werden. Benutzgrund: Rocket League 7000 – 9000 UDP ...

Router & Routing
Fritzbox Gastnetz - exposed Host - zur Sophos IPTV
Frage von medikopterRouter & Routing8 Kommentare

Hallo zusammen, ich habe eine Frage bezüglich des Fritz box Gastzugangs an einer Sophos UTM Home. An liebsten wäre ...