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
Kommentar vom Moderator Biber am 04.08.2010 um 20:42:04 Uhr
Originaltitel "Batchdatei zum Auslesen eines Pfanames" mit einem "d" wie in "Bradkardoffel" angereichert.
GELÖST

Batchdatei zum Auslesen eines Pfadnames

Frage Entwicklung Batch & Shell

Mitglied: Odermark

Odermark (Level 1) - Jetzt verbinden

03.08.2010, aktualisiert 04.08.2010, 2965 Aufrufe, 13 Kommentare

Hallo ich habe ien Problem. Ich ahbe viele PDF, die in verschiedne Ordner sollen. Im Namen der Datei steht an den ersten schs Stellen der Pfadname, wo die Datei hinsoll.

Hallo,

ich habe eine PDF-Datei mit folgender Namensstruktur: 078935141412010803.pdf.

die ersten sechs Ziffern sollen ausgelesen werden und dann soll die Datei in den Pfad mit derKennung 78935, also ohne führende Null, die sich im Ordner C:\\\\speicher\\\\ befindet verschoben werden.

Kann mir jemand helfen?

Vielen Dank
Mitglied: Biber
03.08.2010 um 20:40 Uhr
Moin Odermark,

Kann mir jemand helfen?
Ich mag es eigentlich selbst gar nicht, wenn Fragen immer mit Gegenfragen beantwortet werden müssen.
Aber manchmal habe ich einfach keine Wahl

  • Du hast "viele viele bunte PDFs" in EINEM Ordner, in einer Verzeichnisstruktur, verteilt auf drei Wechselplatten??

Ich habe eine PDF-Datei mit folgender Namensstruktur: 078935141412010803.pdf.
... meine Kidz bekämen für so einen Satz im Pflichtenheft 2 Tage Disko-Verbot.

Die PDFs haben
  • alle einen 18stelligen Namen ausschliesslich aus Ziffern bestehend?
  • haben alle eine führende Ziffer "0"?
  • wenn nein: ergeben sich für die PDFs mit ohne führende "0" dann 6stellige Ordnernamen?
  • noch wenn nein: ergeben sich für die PDFs mit zwei führenden "0" dann 4stellige Ordnernamen?

Die Zielordner existieren? Müssen neu angelegt werden?

[Und optionale Frage, rein aus persönlichem Interesse:
WTF kommt jemand auf die Idee, diese PDF-Berge zu strukturieren erst nachdem sich Tausende angesammelt haben???
Haben die sich denn so sehr überraschend vermehrt jetzt seit der Mai ausgeschlagen hat?]

Grüße
Biber
Bitte warten ..
Mitglied: Odermark
03.08.2010 um 21:55 Uhr
Hallo Biber, Kritik ist angekommen. Ich versuche mich zu bessern.

Die PDFs haben

          • alle einen 18stelligen Namen ausschliesslich aus Ziffern bestehend.
          • haben nicht zwingend eine führende Ziffer "0".
          • Die Ordnernamen sind entweder 5- oder sechsstellig der kleinste Ordnername ist 10000 der größte hat die Nummer 999999. Die Ordner existieren bereits.
          • Die Dateien befinden sich allesamt in einem Ordner (K:/scan/) auf meinem Rechner. Sie werden aus einem Scanner-Kopierer zunächst in readable PDF abgespeichert und dann so in den Pfad K:/scan/ abgelegt. (pro Tag etwa 100 Stück).

(Zur Beantwortung der persönlichen Frage: Die Batchdatei soll in regelmäßigen Abständen diese PDF-Dateien in die Ordner 10000 bis 999999 verschieben. Der Dateiname ist mittels eines Barcodes als Dateiname eingelesen. Er sagt aus in den Stellen 1-6, welcher Ordner, in den Stellen sieben bis 10, welcher Inhalt und von 11-18 welches Eingangsdatum dieses Schreiben hat. Diese OCR-Erkennungssoftware hat keine Zusatzmodul, die das Scannen aus verschiedenen Ordnern zulässt.)

Viele Grüße

Odermark
Bitte warten ..
Mitglied: Biber
03.08.2010 um 22:13 Uhr
Moin Odermark,

danke dir für die Antworten... so wird es ein bisschen einfacher als mit zu vielen Variablen.
Für heute wollte ich erst mal Schicht machen... aber wenigstens "Danke" sagen.

Wenn die Ordner existieren (was ich gehofft habe), dann lässt sich ja auch statt der Strategie

  • Wackele über alle 10000 Dateien, fass jeden gatesverdammten Dateinamen an, mach ein Substring-Geraffel zur Bildung des Ordnernamens, leg den Ordner an UND DANN ENDLICH FANG AN mit MOVEn...

...wie gesagt stattdessen lässt es sich so angehen

  • Über alle vorhandenen Ordner wackeln (sind weniger als 10000) und dann alle Dateien mit der Wildcard-Konvention "ordnername*.pdf" bzw "0ordnername*.pdf" jeweils ein ganzer Schwung verschieben..

Aber, wie geschrieben, morgen.... falls es dann noch offen ist.

Grüße
Biber
Bitte warten ..
Mitglied: LotPings
03.08.2010 um 22:17 Uhr
Hallo Odermark,

das sollte es eigentlich tun
01.
@Echo off 
02.
SetLocal  
03.
Set "Basis=k:\Scan" 
04.
Pushd "%Basis%" 
05.
for %%A in (*.pdf) do Set "File=%%~nA" & Call :ProcessFile "%%~fA" 
06.
Popd 
07.
Goto :Eof 
08.
:ProcessFile 
09.
Set /A "Ordner=1%File:~0,6% - 1000000" 
10.
If Not Exist "%Ordner%" Echo Ordner %Ordner% nicht vorhanden & goto :Eof 
11.
Echo Move %1 "%Ordner%\"
Wenn die Ausgabe auf dem Bildschirm korrekt ersceint das echo in der letzten Zeile entfernen.
Wenn Fragen zu den genutzten Befehlen bestehen, raus damit.

Gruß
LotPings

Edit: übersehenes Base in Basis geändert.
fehlende Tilde in Zeile 9 ergänzt
Überflüssige %Basis% Referenzen entfernt
Bitte warten ..
Mitglied: Odermark
04.08.2010 um 15:53 Uhr
Hallo LotPings,

danke für die schnelle Antwort. Leider kann ich das Ergebnis nicht sehen, weil ich den Befehl nicht weiss, wie ich das Ergebnis auf dem Bildschimr einfrieren kann.

Ich habe folgende Umgebung:
K:\scan
in K:\scan befinden sich der Ordner K:\scan\78935

In K:\scan befindet sich die Datei 078935141412010803.pdf.

Wenn ich jetzt die bat laufen lasse passiert garnichts, ausser dass der Bildschirm kurz was anzeigt.
Liegt das daran, dass die bat nicht auf dem Server läuft, wo K: liegt, sondern auf einem Client. Im Client ist das Verzeichnis scan mit dem laufwerksbuchstaben K: gemappt.

Viele Grüsse

Odermark
Bitte warten ..
Mitglied: pieh-ejdsch
04.08.2010 um 18:29 Uhr
Hi Odermark,

ersetze Zeile 11 mit
01.
Echo Move %1 "%Basis%\%Ordner%\"
Gruß Phil
Bitte warten ..
Mitglied: Biber
04.08.2010 um 18:45 Uhr
Moin pieh-ejdsch,

du antwortest Odermark mit
Zitat von pieh-ejdsch:
Hi Odermark,

ersetze Zeile 11 mit
01.
Echo Move %1 "%Basis%\%Ordner%\"

...auf seine Frage...
Zitat von Odermark:
Leider kann ich das Ergebnis nicht sehen, weil ich den Befehl nicht weiss, wie ich das
Ergebnis auf dem Bildschimr einfrieren kann.

Darf ich mir diesen Dialog abheften für schlechte Zeiten?


@Odermark.
Okay, dann machen mir erstmal mit dem Plan B weiter... mit der Strategie, die ich dir eigentlich ersparen wollte.
[Viele Neu-Bätchlinge fangen oft haltlos an zu Lachen, wenn sie das erste Mal eine Batch-Substring-Ermittlung überreicht bekommen...]

Bitte als Erstes.
  • Öffne dir einen CMD-Prompt [Windows-Taste +"R" --> Eingabe "cmd" -->ENTER.
  • Starte den Batch durch Aufruf von "c:\schnipsel\meinErsterBatch" oder wie er genannt ist.

Und dann machen wir weiter.

Grüße
Biber
Bitte warten ..
Mitglied: pieh-ejdsch
04.08.2010 um 19:01 Uhr
ich dachte eine Korrekte Zeile ist erstmal wichtiger äähhm mindestens genauso wichtig wie Deine Erläuterung.
sorry das ich die Fragestellung nicht beachtet habe.
Bitte warten ..
Mitglied: Biber
04.08.2010 um 19:09 Uhr
Moin pieh-ejdsch,

*lach*
okay, okay, natürlich müssen wir oder Mark..äh...Odermark irgendwann mal diesen Tippfehler %Basis% statt %Base% rauspuhlen.

Es ging nur um die Reihenfolge.
Mit meiner stockkonservativen Methode würde er den Grund auf dem Bildschirm lesen können.
Mit der anderen (der Doppelklick-vom-Desktop-) Methode muss er immer erst ins Internet und auf Hinweise aus ganz Mitteleuropa hoffen.

Grüße
Biber
Bitte warten ..
Mitglied: Odermark
04.08.2010 um 19:29 Uhr
Hallo,
Danke! Es erscheint folgende fehlermeldung:

Ungültige Zahl. Nummerische Konstanten sind entweder dezimale (1/7), hexadezimale (0*11) oder oktale (021) Zahlen.

Move "..." Als Ergebnis gibt er "D:\OCR2\\"

Ich habe die Empfehlung von pieh-ejdsch aufgegriffen und Base durch Basis ersetzt.

Bei Verwendung von Base ist das Ergebnis "\\" Die Fehlermeldung ist dieselbe.

Beste Grüße.
Odermark
Bitte warten ..
Mitglied: LotPings
04.08.2010 um 19:35 Uhr
Zitat von Odermark:
Hallo,
Danke! Es erscheint folgende fehlermeldung:

Ungültige Zahl. Nummerische Konstanten sind entweder dezimale (1/7), hexadezimale (0*11) oder oktale (021) Zahlen.
Sorry in der Zeile 9 fehlte noch eine Tilde, ändere ich oben ab - dann sollte es gehen.

Gruß
LotPings
Bitte warten ..
Mitglied: Odermark
04.08.2010 um 19:39 Uhr
Hallo LotPings, Biber und PhD (ist mir zu lang)

Problem gelöst. Es funktioniert.

Vielen Dank! Ihr seid Spitze
Odermark
Bitte warten ..
Mitglied: Biber
04.08.2010 um 20:37 Uhr
Moin Odermark,

nur als Nachtrag, weil mein gestern skizzierter Plan A ja noch nicht ausformuliert wurde.

Ich wollte ja möglichst ohne so eine Substring-Arie ausjommen, was auch geht wenn die Ordner schon existieren.

Liefe dann auf zwei bis drei Zeilen am CMD-Prompt raus in dem Szenario mit "K:\Scan\*viele*.pdf" und "K:\Scan\nnnnnn\"-Ordner:
mode con cols=155 lines=44 
for %q in ("k:\Scan") do @for /d %i in (%~q\*) do @if exist "%~q\%~ni*.pdf" @move "%~q\%~ni*.*" "%i\" 
for %q in ("k:\Scan") do @for /d %i in (%~q\*) do @if exist "%~q\0%~ni*.pdf" @move "%~q\0%~ni*.*" "%i\"
Aber auch bei diesen Onelinern hätte das Erklären genauso lange gedauert...
[Obwohl... wenn ich EINE Zeile draus gemacht hätte, dann noch länger...]

Grüße
Biber

P.S.
Warum denn LotPings' Schnipsel bei deinem-"K:\Scan"-Szenario so in die Grütze fasst
Move "..." Als Ergebnis gibt er "D:\OCR2\\"...
--> dieses Rätsel lassen wir mal auf sich beruhen...
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
gelöst Mit Batchdatei Informationen auslesen und diese strukturiert in Excel ausgeben (9)

Frage von Flodsche zum Thema Batch & Shell ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

Batch & Shell
gelöst Appx aus Image auslesen und entfernen (9)

Frage von Markus2016 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...