Spezifische benannter Order in relativem Pfad finden und Datei dorthin kopieren. Batch
Hallo Zusammen,
ich bin ein neuer Nutzer, wohlwissend - leider - aber der x-fachste Fragensteller eines wohl ähnlichen Sachverhalts.
Folgender Sachverhalt:
Wir scannen Aufträge manuell am Drucker.
Jeder Nutzer hat auf dem personalisiertem Laufwerk y:\ seinen Scan-Ordner.
Der Scanner gibt am Display einen 4-stelligen Vorgangscode aus.
Daraus wird auch der Dateiname erzeugt: 4711_0001.pdf
Dieser Scan wird sinngemäß umbenannt. Und wird dann - wieder manuell - in SAP elektronisch archiviert.
Um mir diesen Vorgan zu erleichter habe ich mir folgende batch Datei geschrieben, welche auf c:\... liegt:
So kann ich einfach im SAP auf den [Durchsuchen] Button im Register Anhänge des Auftrags klicken, meine y:\
Laufwerk ansteuern und die oberste Datei ist mein Anhang.
Nun kommt der Punkt an dem ich Hilfe brauche. Ich bin kein ITler und hab auch keinen generellen dv Background.
Das was ich kann hab ich mir selbst erarbeitet und es ist leider nicht allzu viel.
Unsere Techniker holen Sich Ihre Informationen nicht aus dem SAP. Diese führen das Laufwerk Z:\
Dort ist die Struktur wie folgt:
Z:\Aufträge\Deutschland\K\Kamilla\42D08156\ ... Dateien ".pdf", ".doc" usw..
Z:\Maßprotokolle\China\K\Kamilla\42D08157\ ... Dateien ".pdf", ".doc" usw..
Pfad = [Vorgangs bzw. Informations-Art] -> [Land] -> [Alphabet] -> [Kundenname] -> [Auftragsnummer] :: bis hier hin Ordner :: \-> Dateien aller Art.
Also auch wenn ich brav meine Aufträge in SAP archiviere, wollen unsere Techniker diese Datei nochmals auf Ihre Laufwerk Z:\
Da unsere Techniker und unsere Kaufluete dort arbeiten, und es halt an dem notwendigen Wissen fehlt für dv gerechte Benennungen,
haben wir z.B.:
- im Haupt Ordner "Aufträge" einen Umlaut in der Benennung.
- im Haupt Ordner "Aufträge" wird der Unter-Ordner mit dem Kunden Namen wie folgt benannt: "D+M Formbau"
- im Haupt Ordner "Maßprotokolle" ist der Unter Ordner mit dem Kunden Namen: "D + M, Formbau GmbH" - benannt.
- im Haupt Ordner "Zertifikate" heisst der Kunde dann: "D+M, Formenbau"
Ich denke die Problematik ist ersichtlich was die Ordner Benennung angeht. Die Struktur steht aber schon Jahrzehnte und sie
wird sich auch nicht ändern.
Nun hätte ich gern, das meine obige Batch Datei, nach dem umbenennen des Scans, automatisch eine Kopie davon in den jeweilgen
Auftragsordner im Laufwerk Z:\Aufträge\...\42D08156\ speichert. Das einzige eindeutige Kriterium ist die Auftragsnummer welche
ich ja im obigen Batch schon in der Variablen Vng_Ref hinterlege. Der Ordnerpfad davor ist leider unter mehreren
Parametern variabel.
Ich hab bereits die SuFU genutzt, ich hab sämtliche Foren hoch unter runter geschaut... aber entweder ist es ein Tutorial
zu einem absoluten Pfad, oder einem realtiven Pfad wo aber der Batch auf dem selben Laufwerk liegt usw..
Das passende konnte ich leider nicht finden und mir aus den Fragmenten auch keine Lösung basteln.
Daher hier mein Hilfe Gesuch für einen nutzbaren Code.
Ein Bitte hätte ich, versucht bitte die Code Schnibsel so gut es geht mit Erklärungen zu versehen. Ich versuche eigentlich immer
aus jedem Punkt, Strich, Prozentzeichen, Attributsangabe usw. zu lernen. Leider findet man aber in den Foren nie wirklich detailiert beschrieben
was der Zweck und die Funktion dahinter ist.
Zum Verständis dieser Bitte:
Die code Zeile:
Sie funktioniert und macht was Sie soll, das aktuelle Datum erzeugen ... wie Sie das aber macht, sprich was dort jedes "~" oder der Operator
"-10,2%" bewirkt .... seufz .... ich hab keinen blasen Schimmer :-P
Und ohne das zu verstehen wendet es sich später so schlecht an.
Von daher, vielen Dank im Voraus für eure Hilfe.
ich bin ein neuer Nutzer, wohlwissend - leider - aber der x-fachste Fragensteller eines wohl ähnlichen Sachverhalts.
Folgender Sachverhalt:
Wir scannen Aufträge manuell am Drucker.
Jeder Nutzer hat auf dem personalisiertem Laufwerk y:\ seinen Scan-Ordner.
Der Scanner gibt am Display einen 4-stelligen Vorgangscode aus.
Daraus wird auch der Dateiname erzeugt: 4711_0001.pdf
Dieser Scan wird sinngemäß umbenannt. Und wird dann - wieder manuell - in SAP elektronisch archiviert.
Um mir diesen Vorgan zu erleichter habe ich mir folgende batch Datei geschrieben, welche auf c:\... liegt:
@echo off
echo Für elektronisch Ablage der Scans in SAP
set /p Fax_Ref=Bitte die Order Referenz des Fax Geraets eingeben:
set /p Vng_Ref=Bitte die SAP Vorgangsnummer eingeben:
set /p Kd_Name=Bitte den Kundennamen eingeben:
set myDat=%date:~-4%-%date:~-7,2%-%date:~-10,2%
Set File_Name=%myDat%"_"%Vng_Ref%"_"%Kd_Name%
ren "Y:\%Fax_Ref%_0001.pdf" "%File_Name%.pdf"
echo /p %File_Name%
Pause
So kann ich einfach im SAP auf den [Durchsuchen] Button im Register Anhänge des Auftrags klicken, meine y:\
Laufwerk ansteuern und die oberste Datei ist mein Anhang.
Nun kommt der Punkt an dem ich Hilfe brauche. Ich bin kein ITler und hab auch keinen generellen dv Background.
Das was ich kann hab ich mir selbst erarbeitet und es ist leider nicht allzu viel.
Unsere Techniker holen Sich Ihre Informationen nicht aus dem SAP. Diese führen das Laufwerk Z:\
Dort ist die Struktur wie folgt:
Z:\Aufträge\Deutschland\K\Kamilla\42D08156\ ... Dateien ".pdf", ".doc" usw..
Z:\Maßprotokolle\China\K\Kamilla\42D08157\ ... Dateien ".pdf", ".doc" usw..
Pfad = [Vorgangs bzw. Informations-Art] -> [Land] -> [Alphabet] -> [Kundenname] -> [Auftragsnummer] :: bis hier hin Ordner :: \-> Dateien aller Art.
Also auch wenn ich brav meine Aufträge in SAP archiviere, wollen unsere Techniker diese Datei nochmals auf Ihre Laufwerk Z:\
Da unsere Techniker und unsere Kaufluete dort arbeiten, und es halt an dem notwendigen Wissen fehlt für dv gerechte Benennungen,
haben wir z.B.:
- im Haupt Ordner "Aufträge" einen Umlaut in der Benennung.
- im Haupt Ordner "Aufträge" wird der Unter-Ordner mit dem Kunden Namen wie folgt benannt: "D+M Formbau"
- im Haupt Ordner "Maßprotokolle" ist der Unter Ordner mit dem Kunden Namen: "D + M, Formbau GmbH" - benannt.
- im Haupt Ordner "Zertifikate" heisst der Kunde dann: "D+M, Formenbau"
Ich denke die Problematik ist ersichtlich was die Ordner Benennung angeht. Die Struktur steht aber schon Jahrzehnte und sie
wird sich auch nicht ändern.
Nun hätte ich gern, das meine obige Batch Datei, nach dem umbenennen des Scans, automatisch eine Kopie davon in den jeweilgen
Auftragsordner im Laufwerk Z:\Aufträge\...\42D08156\ speichert. Das einzige eindeutige Kriterium ist die Auftragsnummer welche
ich ja im obigen Batch schon in der Variablen Vng_Ref hinterlege. Der Ordnerpfad davor ist leider unter mehreren
Parametern variabel.
Ich hab bereits die SuFU genutzt, ich hab sämtliche Foren hoch unter runter geschaut... aber entweder ist es ein Tutorial
zu einem absoluten Pfad, oder einem realtiven Pfad wo aber der Batch auf dem selben Laufwerk liegt usw..
Das passende konnte ich leider nicht finden und mir aus den Fragmenten auch keine Lösung basteln.
Daher hier mein Hilfe Gesuch für einen nutzbaren Code.
Ein Bitte hätte ich, versucht bitte die Code Schnibsel so gut es geht mit Erklärungen zu versehen. Ich versuche eigentlich immer
aus jedem Punkt, Strich, Prozentzeichen, Attributsangabe usw. zu lernen. Leider findet man aber in den Foren nie wirklich detailiert beschrieben
was der Zweck und die Funktion dahinter ist.
Zum Verständis dieser Bitte:
Die code Zeile:
set myDat=%date:~-4%-%date:~-7,2%-%date:~-10,2%
Sie funktioniert und macht was Sie soll, das aktuelle Datum erzeugen ... wie Sie das aber macht, sprich was dort jedes "~" oder der Operator
"-10,2%" bewirkt .... seufz .... ich hab keinen blasen Schimmer :-P
Und ohne das zu verstehen wendet es sich später so schlecht an.
Von daher, vielen Dank im Voraus für eure Hilfe.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 533606
Url: https://administrator.de/forum/spezifische-benannter-order-in-relativem-pfad-finden-und-datei-dorthin-kopieren-batch-533606.html
Ausgedruckt am: 15.05.2025 um 22:05 Uhr
24 Kommentare
Neuester Kommentar
Hi!
OK! Es ist nicht einfach die Infos aus dem vielen Text zu holen, aber grundsätzlich willst du deinen Scan in deinem Laufwerk und dem der anderen ablegen.
Warum erweitert du dann nicht dein Batch?
Also lege dir noch ein paar weitere Variablen mit den Pfaden an und kopiere deinen Scan auch dort hin. Die Umlaute sind zwar Kacke, aber normalerweise kein Problem.
Habe ich was übersehen?
Grüße!
OK! Es ist nicht einfach die Infos aus dem vielen Text zu holen, aber grundsätzlich willst du deinen Scan in deinem Laufwerk und dem der anderen ablegen.
Warum erweitert du dann nicht dein Batch?
- Den neuen Namen des Scans hast du ja schon.
- den Pfad der anderen Ordner hast du auch.
Also lege dir noch ein paar weitere Variablen mit den Pfaden an und kopiere deinen Scan auch dort hin. Die Umlaute sind zwar Kacke, aber normalerweise kein Problem.
Habe ich was übersehen?
Grüße!
Zitat von @Thorkmon:
Im Grund müsste der Batch mir den Pfad "auslesen" wo genau der 4 Unterordner mit dem spezifischen Auftragsnamen liegt
Im Grund müsste der Batch mir den Pfad "auslesen" wo genau der 4 Unterordner mit dem spezifischen Auftragsnamen liegt
also die?:
Z:\Aufträge\Deutschland\K\Kamilla\42D08156\ ... Dateien ".pdf", ".doc" usw..
Z:\Maßprotokolle\China\K\Kamilla\42D08157\ ... Dateien ".pdf", ".doc" usw..
oder noch tiefer?
oder meinst du das?:
- im Haupt Ordner "Aufträge" einen Umlaut in der Benennung.
- im Haupt Ordner "Aufträge" wird der Unter-Ordner mit dem Kunden Namen wie folgt benannt: "D+M Formbau"
- im Haupt Ordner "Maßprotokolle" ist der Unter Ordner mit dem Kunden Namen: "D + M, Formbau GmbH" - benannt.
- im Haupt Ordner "Zertifikate" heisst der Kunde dann: "D+M, Formenbau"
Per Log.File über eine .txt zu exportieren und dann auszulesen sollte am effizientesten sein.
das bezweifle ich sehr. nicht nur, dass es extrem umständlich ist, es ist auch mehr als buggy.
Aber eben den Pfad zu bestimmen und das exportieren und auslesen des Log.Files… da fehlt mir einfach die Kenntnis.
Batch ist meiner Ansicht nach auch nicht wirklich geeignet um so komplexe Aufgaben wie Ordner nach Patterns zu durchsuchen umzusetzen. Warum verwendest du nicht Powershell oder zumindest VBS?
Hoffe jetzt wird es etwas deutlicher was ich möchte. Der Batch soll halt unabhängig vom jeweiligen Kunden funktionieren und sich immer an der Auftragsnummer orientieren.
Nicht wirklich!
Bitte beschreibe mal von A bis Z was du bei einem Auftrag machst. Also vom Auftrag anlegen bis zum Kopieren in die NLWs der anderen Bereiche. in etwa so:
- Auftragsnummer erheben in/durch/von/...
- PDF umbenennen
- Auftrag im SAP anlegen
- nach Ordner xy suchen (nach welchen Kriterien??)
- PDF kopieren (wohin jetzt genau??, Sind da noch weitere Unterordner zu durchsuchen oder gehts nach speziellen Namen??)
Grüße!

Auftragsordner im Laufwerk Z:\Aufträge\...\42D08156\ speichert. Das einzige eindeutige Kriterium ist die Auftragsnummer welche
ich ja im obigen Batch schon in der Variablen Vng_Ref hinterlege. Der Ordnerpfad davor ist leider unter mehreren Parametern variabel.
Suchen nach Ordnernamen geht mit Batch bspw. so (nicht vom Pfad beirren lassen, er sucht auch nach dem Ordner-Namen in Unterordnern, nicht nur im Root! Wegen Parameter /s).ich ja im obigen Batch schon in der Variablen Vng_Ref hinterlege. Der Ordnerpfad davor ist leider unter mehreren Parametern variabel.
@echo off
:: Codepage anpassen damit Umlaute richtig verarbeitet werden
chcp 1252
:: Nummer eingeben lassen
set /p Vng_Ref=Bitte die SAP Vorgangsnummer eingeben:
:: Im Root-Pfad inkl. Unterordner nach Vorgangsnummer suchen
for /f "delims=" %%a in ('dir /b /s /ad "Z:\Aufträge\%Vng_Ref%"') do set "folder=%%a"
if defined folder (
echo Ordner hier gefunden '%folder%'
) else (
echo Ordner '%Vng_Ref%' wurde nicht gefunden!
)
Tutorial zur FOR-Schleife
Parameter zum dir Befehl mit dir /? auf der Konsole.
sprich was dort jedes "~" oder der Operator "-10,2%" bewirkt .... seufz .... ich hab keinen blasen Schimmer :-P
Hier kannst du es nachschlagenhttps://www.dostips.com/DtTipsStringManipulation.php#Snippets.Remove

Gestern Abend ist mir einer in die Karre gerauscht...
Ouhh, das tut mir leid. Aber "thank god you're still alive" bei den vielen Blindschleichen da draußen .
Zitat von @Thorkmon:
Hab den obestehende Code mal laufen lassen. Leider findet er den Ordner nicht.
Ich hab es dann mal versucht mit dem 1ten Unterordner. Sprich in dem Fall "Belgien".
Als Ergebnis gibt es immer:
Das System kann die angegebene Datei nicht finden.
Ordner 'Belgien' wurde nicht gefunden!
Ich hab verschiedene, auch definitv vorhandene Ordner Name verwendet. Ergebnis bleibt das gleiche wie oben.
Irgendwie sucht er eine Datei und keinen Ordner.
Nein es werden nur Ordner gesucht (Parameter /ad) , code wurde hier einwandfrei getestet und Ordner gefunden, hab ich schon x mal so gemacht!Hab den obestehende Code mal laufen lassen. Leider findet er den Ordner nicht.
Ich hab es dann mal versucht mit dem 1ten Unterordner. Sprich in dem Fall "Belgien".
Als Ergebnis gibt es immer:
Das System kann die angegebene Datei nicht finden.
Ordner 'Belgien' wurde nicht gefunden!
Ich hab verschiedene, auch definitv vorhandene Ordner Name verwendet. Ergebnis bleibt das gleiche wie oben.
Irgendwie sucht er eine Datei und keinen Ordner.
Du hast wahrscheinlich deine Batch-Datei nicht im richtigen Encoding gespeichert, damit er die Umlaute richtig interpretieren kann und deswegen deinen Root-Ordner schon nicht findet..

Zitat von @Thorkmon:
Also es scheint am Netzwerklaufwerk zu liegen.
Wenn ich das zu durchsuchende Verzeichnis auf C: lege findet er Verzeichnisse.
Hab auch den Batch mal auf Z gespeichert aber da bleibt das Ergebnis wie zuvor mit Bild aufgezeigt.
Also es scheint am Netzwerklaufwerk zu liegen.
Wenn ich das zu durchsuchende Verzeichnis auf C: lege findet er Verzeichnisse.
Hab auch den Batch mal auf Z gespeichert aber da bleibt das Ergebnis wie zuvor mit Bild aufgezeigt.
Nö, das ist unabhängig und geht einwandfrei, siehe:
F u n z t. Ich bin raus, viel Erfolg noch bei den Batch Basteleien in den 2020ern. Lerne Powershell oder Bash.
Ciao.

Dann überschreiten entweder die Pfade auf Z die Pfadlänge von 255 Zeichen, oder die Batch läuft nicht mit dem Account mit dem das Laufwerk gemappt wurde. Netzlaufwerke werden ja benutzerabhängig gemappt und schon das Starten einer elevated Batch führt dazu das Netzlaufwerke der Nutzer-Session dort nicht verfügbar sind und somit die Batch nichts finden kann.
Wo die Batch liegt ist übrigens unerheblich da wir ja den absoluten Such-Pfad angeben.
Statt ein Netzlaufwerk zu verwenden nutze mal die UNC-Pfade des Laufwerks, das geht mit dem DIR-Befehl ebenfalls.
Oder nutze einfach die Powershell, ist sowieso zeitgemäßer
Fertsch. Ihr baut euch unnötige Umwege
.
Wo die Batch liegt ist übrigens unerheblich da wir ja den absoluten Such-Pfad angeben.
Statt ein Netzlaufwerk zu verwenden nutze mal die UNC-Pfade des Laufwerks, das geht mit dem DIR-Befehl ebenfalls.
Oder nutze einfach die Powershell, ist sowieso zeitgemäßer
Get-ChildItem 'Z:\Aufträge' -Filter 'ID1234' -Directory -Recurse

Zitat von @Thorkmon:
Ich hab es mal mit dem UNC PFad versucht, wie in den Bilder oben im Explorer gezeigt. Funktioniert aber leider auch nicht.
ping ich den LaufwerksNamen im cmd an bekomm ich die IP und noch die Angabe Laufwerksnamen.local.
Ist ja auch Blödsinn! "Den Laufwerksnamen pingen" ... wat für'n Stuss!Ich hab es mal mit dem UNC PFad versucht, wie in den Bilder oben im Explorer gezeigt. Funktioniert aber leider auch nicht.
ping ich den LaufwerksNamen im cmd an bekomm ich die IP und noch die Angabe Laufwerksnamen.local.
Aber auch mit der IP und dem Zusatz .local findet er einfach nicht das Netzwerk-Laufwerk.
Ebenso Blödsinn, scheint da fehlt schon grundlegendes Netzwerkwissen, schon weil man ein *.local nutzt das für mDNS reserviert ist.
Zitat von @Thorkmon:
Das lag schlicht und ergreifend an den Notepad Einstellungen. Ich hab es dann unter der Codierung ANSI gespeichert und dann übertrug er auch das ä korrekt.
Das lag schlicht und ergreifend an den Notepad Einstellungen. Ich hab es dann unter der Codierung ANSI gespeichert und dann übertrug er auch das ä korrekt.
Deswegen hatte ich ja ganz zu Anfang das hier zu dir geschrieben:
Du hast wahrscheinlich deine Batch-Datei nicht im richtigen Encoding gespeichert, damit er die Umlaute richtig interpretieren kann
und dann stark nachgelassen hast
Wer lesen kann ist klar im Vorteil