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- Dateien in Ordner verschieben

Frage Entwicklung Batch & Shell

Mitglied: 43964

43964 (Level 1)

18.12.2007, aktualisiert 15:29 Uhr, 8715 Aufrufe, 9 Kommentare

Hallo,

folgendes Problem:

Ich erhalte täglich neue Dokumente in einen Ordner (z.B: C:\Dokumente\). Diese Dokumente beeinhalten u.a. eine 4stellige Zahlenkombination (0000 bis 9999). Anhand dieser Zahlenkombination sollen die Dokumente in den Passenden Ordner geschoben werden. Also "xyz-0000-abcd.pdf" in den Ordner C:\Dokumente\0000\).
Der Ordner C:\Dokumente\ soll danach wieder leer sein und alle Dokumente in den Unterordnern sein.

Das Kopieren bzw. Verschieben soll einmal täglich als Job auf einem Server2003 laufen.

Wie würde der Inhalt einer Batchdatei aussehen?

Vielen Dank.
Mitglied: Biber
18.12.2007 um 10:28 Uhr
Moin Schwimmbutz,

Wie würde der Inhalt einer Batchdatei aussehen?
Gegenfragen:
  • Wie sieht denn Dein bisheriges Skript aus?
  • Wo sind die Probleme?
  • Was funktioniert/was funktioniert noch nicht?

Oder wolltest Du hier ein Fertig-Skript kaufen? *gg

Grüße
Biber
Bitte warten ..
Mitglied: 43964
18.12.2007 um 10:35 Uhr
Hi,

mein bisheriges "Skript" erfasst jede Nr. (die bei uns für einen Kunden steht) einzeln.
Heisst also (im Ordner C:\dokumente):

copy *0000*.pdf c:\dokumente\0000
copy *0001*.pdf c:\dokumente\0001
.
.
.
copy *9999*.pdf c:\dokumente\9999
del*.*

Naja, für den Anfang natürlich völlig ausreichend. Da aber viele neue Kunden dazu kommen, ist es jedesmal eine ziemliche Sau-Arbeit die neuen hinzuzufügen (ca. 100 pro Woche).
Das bedeutet eine Menge Tipperei, die ich nun automatisiert umgehen will!
Bitte warten ..
Mitglied: Biber
18.12.2007 um 11:42 Uhr
Moin Schwimmbutz,

okay, dann wäre es je nach Strategie entweder ein Oneliner oder ein Einzeiler vom CMD-Prompt.

Entweder du wählst den Weg "Ich gehe alle vorhandenen Zielordner durch, denn ich will nicht, dass automatisch neue Ordner angelgt werden bei neuen Dateinamen in der Pipeline"...
01.
>for /d %i in ("c:\dokumente\????") do if exist  "*%~nxi*.pdf" ECHO move "*%~nxi*.pdf" "%i\*.*
-oder Du gehst über alle Dateien im Sammel-Ordner und kopierst alle, die noch nicht in den Schubladen 0001....9999 vorhanden sind.
Dazu könntest Du eine FOR /L-Anweisung von 10001....19999 laufen lassen und daraus die "0001" bis "9999"-Teilstrings erzeugen.

Aber vorher (er-)klär noch mal bitte, wie es mit COPY oder MOVE/ überschreiben/ersetzen/überspringen aussieht.

Grüße
Biber
Bitte warten ..
Mitglied: 43964
18.12.2007 um 11:52 Uhr
Hi,

jede Datei kommt nur einmal vor! Es ist also nicht möglich, dass eine Datei mit gleichem Namen später erneut auftaucht.

Es ist also nur wichtig, dass:
- Die Dateien in den entsprechenden (vorhandenen!) Ordner verschoben werden
- Der Stammordner danach leer ist.


Kann ich deine oben eingerahmte Zeile so übernehmen?
Daraus eine .bat erstellen und dann als geplanten Task ausführen?
Vielen Dank!!!!
Bitte warten ..
Mitglied: Biber
18.12.2007 um 12:33 Uhr
Moin Schwimmbutz,

Kann ich deine oben eingerahmte Zeile so übernehmen?
Im Prinzip ja... aber:
  • Das "ECHO " kann und sollte nach dem Testen natürlich raus.
  • überall, wo jetzt ein Prozentzeichen steht, müssen es im Batch deren zwei werden.
  • und da, wo bisher (2x) "*%~nxi*.pdf" steht, sollte jeweils "x:\SammelDir\*%~nxi*.pdf" stehen.

Ansonsten sollte es so passen.
Und natürlich bedeutet diese Strategie, dass diese Zeile IMMER für alle 9999 Ordner (falls es alle gibt) prüft, ob eine für diesen Ordner passende Datei rumliegt.
Auch wenn nur eine einzige oder gar keine Datei wartet.

Grüße
Biber
Bitte warten ..
Mitglied: stbewo
18.12.2007 um 12:51 Uhr
Hallo Schwimmbutz,

probiere es einmal hiermit:

@echo off
setlocal ENABLEDELAYEDEXPANSION
set /a zaehler=1
set input=C:\DOKUMENTE\*.PDF
@for %%f in (%input%) do if "%%f"=="%%f" (
set file=%%f
set KdNr=!file:~14,4!
echo Nr. !zaehler! und File = %%f und Kundenummer = !KdNr!
if not exist c:\dokumente\!KdNr!\. md c:\dokumente\!KdNr!
if exist c:\dokumente\!KdNr! copy %%f c:\dokumente\!KdNr!
set /a zaehler+=1
del /q %%f
) ELSE (
echo.
)
pause

Falls die Kundenummer (Verzeichnis) noch nicht existiert, wird das Verzeichnis angelegt.

PS: Ist aber eine Quick and Dirty Lösung.

Gruß
Stefan
Bitte warten ..
Mitglied: 43964
18.12.2007 um 13:58 Uhr
Hi Stefan,

danke für die Lösung.
Was muss ich verändern, wenn die 4-stellige Nummer in Zukunft direkt am Anfang steht.
Bsp: 0815-Testen-blabla-2007.pdf
Bitte warten ..
Mitglied: stbewo
18.12.2007 um 15:24 Uhr
Du musst

set KdNr=!file:~14,4!

ändern. Es werden ab Stelle 14 für die Kundenunmmer 4 Stellen extrahiert. Du musst aber beachten, dass der Pfadname (C:\DOKUMENTE\9000.PDF) mitgezählt wird. Das heist, im Moment gehe ich davon aus, dass die Dokumente alle mit der Kundenummer (!file:~14,4!)beginnen (9000-blabla.PDF). Sollte der Dateinamen umgekehrt sein blabla9000.pdf dann ist !file:~20,4!. Die Kundennummer im Filenamen muss aber immer an der gleichen Stelle stehen.

Gruß
Stefan
Bitte warten ..
Mitglied: 43964
18.12.2007 um 15:29 Uhr
Vielen herzlichen Dank!
Du hast mir sehr geholfen! Hoffe, ich kann mich mal revanchieren.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch Ordner erstellen und verschieben
gelöst Frage von FromeonlyBatch & Shell6 Kommentare

Hallo Leute, ich habe ein kleines Problem beim erstellen einer Batch. Ziel der Batch soll es sein, dass sie ...

Batch & Shell
Ordner per Batch verschieben, Datei kopieren
gelöst Frage von Shape.ShifterBatch & Shell2 Kommentare

Guten Abend :) Ich möchte mein Backup etwas anpassen und muss dafür viele Ordner verschieben und jeweils eine Datei ...

Batch & Shell
Batch: bestimmte Datei finden und den Ordner verschieben
gelöst Frage von Gari.onBatch & Shell9 Kommentare

Hallo! ich hoffe ich bin hier richtig, es geht um folgendes Problem: in einem Ordner liegen mehrere Unterordner mit ...

Batch & Shell
Batch: Dateien in einen Ordner verschieben, wenn sie im Zielordner nicht schon vorhanden sind
gelöst Frage von SinzalBatch & Shell7 Kommentare

Hallo Leute, ich bin neu im Forum und versuche mich an meiner ersten Frage. Bitte habt etwas Nachsicht, wenn ...

Neue Wissensbeiträge
Windows 10

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

Tipp von kgborn vor 1 TagWindows 106 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 1 TagSicherheits-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 ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 TagenDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

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

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

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...

Windows Server
Ping auf einen bestimmten Server nicht möglich
gelöst Frage von a.thierWindows Server7 Kommentare

Hallo, ich habe folgendes Problem. srv-dc1: Ping srv-nav > geht Ping srv-exchange > geht nicht srv-exchange: Ping srv-dc1 > ...

Hardware
Fujitsu Workstation mit K80 und Quadro P5000, Fehlermeldung: Connect Power Adapter
Frage von MachelloHardware7 Kommentare

Hallo Zusammen, ich benötige euren Rat da ich ratlos bin. Folgende Konfiguration im Büro: Fujitsu Workstation Celcius R940 Power ...