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

Frage Entwicklung Batch & Shell

GELÖST

Platzhalter im Pfadnamen bei move, copy etc.

Mitglied: MarkusI

MarkusI (Level 1) - Jetzt verbinden

03.11.2009, aktualisiert 08:26 Uhr, 10123 Aufrufe, 6 Kommentare

Hallo zusammen!
Ich habe ein für mich unlösbares Problem:

Ausgangslage:
Auf einem XP-Rechner werden in einem Verzeichnis durch ein Programm Verzeichnisse mit immer unterschiedlicher Bezeichnung erstellt; diese Verzeichnisse beinhalten ua. Daten, welche ich zur Weiterverarbeitung in andere Verzeichnisse verschieben will - am liebsten per Batch:

Bsp.:
Es werden unter C:\temp\eingang die Verzeichnisse vps12345, vps67890, vps09876, vps54321 angelegt; jedes Verzeichnis enthält ein weiteres Verzeichnis namens "Anlagen", dort befinden sich Dateien mit oder ohne Endung, sie beginnen aber IMMER mit KR oder UE.

Das Ziel ist es, die Dateien, beginnend mit KR in den Ordner C:\temp\data zu verschieben; die Dateien, beginnend mit UE in den Ordner C:\temp\prot, und abschließend die vps-Ordner zu löschen. Unter Linux klappt das auch mit dem * als Wildcard; leider muss es unter Windows irgendwie laufen.

Wäre schön, wenn mir jemand helfen könnte.

Vielen Dank.
Mitglied: Marwed
03.11.2009 um 10:17 Uhr
01.
@echo off 
02.
 
03.
rem  Gruss, Marwed 
04.
 
05.
:: Verteilen der Daten von c:\temp\eingang 
06.
:: Einlesen der gefundenen Files in temporäre Listen-Dateien, dann Verteilung in die Zielverzeichnisse 
07.
 
08.
if exist c:\temp\eingang\vps* ( 
09.
 
10.
	if exist KRfiles.txt del /F /Q KRfiles.txt 
11.
	dir /b /s c:\temp\eingang\KR* >> KRfiles.txt 
12.
	for /F %%i in ( KRfiles.txt ) do ( 
13.
		copy /V /Y %%i c:\temp\data > nul 
14.
15.
 
16.
	if exist UEfiles.txt del /F /Q UEfiles.txt 
17.
	dir /b /s c:\temp\eingang\UE* >> UEfiles.txt 
18.
	for /F %%i in ( UEfiles.txt ) do ( 
19.
		copy /V /Y %%i c:\temp\prot > nul 
20.
21.
22.
 
23.
:: Löscht Verzeichnis Eingang mit allen Unterverzeichnissen und erstellt es LEER neu 
24.
rd /S /Q c:\temp\eingang 
25.
md c:\temp\eingang 
26.
 
Gruß,
Marwed
Bitte warten ..
Mitglied: MarkusI
03.11.2009 um 10:42 Uhr
1000 Dank! Ich teste gleich & berichte...hatte inzwischen was eigenes gebastelt, funktioniert prinzipiell genauso...ich stelle es mal auszugsweise rein (bitte nicht lachen

...

dir /B /s KR*.* > KR.txt

for /F %%i in (KR.txt) Do (
copy %%i C:\temp\eingang\data
)

dir /B /s UE*.* > UE.txt

for /F %%i in (UE.txt) Do (
copy %%i C:\temp\eingang\prot
)

...
Bitte warten ..
Mitglied: Marwed
03.11.2009 um 11:05 Uhr
[edit] ... die Wildcards so angeben KR* (da ja auch Dateien ohne Endung gefunden werden sollen) Schalter bei COPY und RD/MD setzen [\edit]

... sonst völlig richtig.

Du soltest aber noch etwas 'Fleisch' dranbasteln

Falls \data und \prot nicht existierten, würden sie nicht automatisch erstellt.
Also:
if not exist c:\temp\data\nul md c:\temp\data
if not exist c:\temp\prot\nul md c:\temp\prot

Sicherheit:
Löschen von \eingang nur, wenn Daten kopiert wurden.
Setze IN der Schleife eine Variable zB. DONE=1 (VOR der Schleife erst auf 0 setzen).
NACH der Schleife - vor dem Löschen von \eingang - prüfe mit IF anhand der Variablen, ob kopiert wurde.

Gruß,
Marwed
Bitte warten ..
Mitglied: bastla
03.11.2009 um 11:46 Uhr
@Marwed
Etwas schlanker (nämlich ohene Temporärdatei, wenn diese nicht auch noch für andere Zwecke gebraucht werden sollte) ginge es (am Beispiel der Zeilen 11 bis 14) so:
for /f "delims=" %%i in ('dir /b /s c:\temp\eingang\KR*') do copy /V "%%i" c:\temp\data >nul
Ob der "copy"-Schalter "/V" für mehr als Abwärtskompatibilität steht, kann Dir im Zweifelsfall Biber sagen - "/Y" braucht es in einem Batch allerdings sicher nicht, da defaultmäßig überschrieben wird (siehe "copy /?"; gilt auch für "move").

Ich setze zwar im Zweifelsfall ohnehin eher zu viele Anführungszeichen, aber um "%%i" herum würden ich sie keinesfalls weglassen (und da ich eben grundsätzlich mögliche Leerzeichen in Pfad / Dateiname berücksichtige, auch noch "delims=") ...

Grüße
bastla
Bitte warten ..
Mitglied: MarkusI
03.11.2009 um 14:53 Uhr
Ich danke euch für euere Unterstützung!

VG

Markus
Bitte warten ..
Mitglied: Marwed
03.11.2009 um 20:27 Uhr
@bastla

... DAS ISSES ... !
Logisch, den Befehl (dir) gleich in die Schleife hau'n )
Mit mehr Nachdenken hätte mir das auch einfallen müssen ...
)
thx
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Move mit Robocopy
gelöst Frage von 0xC0FFEBatch & Shell2 Kommentare

Hallo zusammen, ich würde gerne Bilder von einem Verzeichnis in ein anderes Verschieben mit Folgenden Ausschlusskriterien: Dateiendung : .jpg ...

Datenbanken
Platzhalter für VBA Code
gelöst Frage von Dr.CornwallisDatenbanken4 Kommentare

Hi zusammen, viele von euch VBA Cracks werden jetzt bestimmt lachen aber ich schaffe es einfach nicht einen Platzhalter ...

Batch & Shell
In variablen ein Platzhalter ein bauen
Frage von soritoseBatch & Shell1 Kommentar

Hallo ich weis das Tema ist alt ich auch habe da noch eine frage zu den Tema da ich ...

Windows Server
PowerShell move-item
gelöst Frage von r00t-1337Windows Server2 Kommentare

Hallo zusammen, kennst jemand die Möglichkeit in PowerShell via move-item zuvor ausgewählte Dateien (z.B. alle Dateinen usw. welche älter ...

Neue Wissensbeiträge
Router & Routing

PfSense als Addon auf QNAP

Information von magicteddy vor 2 StundenRouter & Routing

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 9 StundenDatenschutz

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 13 StundenMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 3 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement22 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...

SAN, NAS, DAS
Wer kennt sich mit QNAP und CISCO aus ?
gelöst Frage von MachelloSAN, NAS, DAS10 Kommentare

Hallo Zusammen hier im Forum, Ich habe ein QNas 451+ und dieses NAS hat zwei GBit Lan Adapter die ...

Windows Server
Terminal Server 2016 erkennt Berechtigungen nicht
gelöst Frage von Thomas2Windows Server10 Kommentare

Hallo Administratoren, folgendes Problem stellt sich dar: Es gibt zwei Windows Server 2016, die als Terminal Server fungieren. Jetzt ...