Zum Inhalt wechseln


Foto

Batch Datei: PDF Dateien verschieben, umbenennen und löschen


  • Bitte melde dich an um zu Antworten
12 Antworten in diesem Thema

#1 F0rcehunter

F0rcehunter

    Newbie

  • 5 Beiträge

 

Geschrieben 24. April 2017 - 13:53

Hallo zusammen,

 

ich versuche mich gerade an einer Batch, die folgende Arbeitsschritte durchführen soll:

 

In dem Ordner "C:\Produktdaten_zur_Uebernahme" befinden sich PDF Dateien. Jede PDF Datei hat eine 6 Stellige Nummer vorweg. Es soll nun pro unterschiedlicher PDF Datei (Unterscheidung anhand der Nummer) ein Ordner erstellt werden, der so heißt wie die ersten sechs Stellen der PDF Datei. In diesen Ordner soll dann die entsprechende Datei kopiert werden (Falls es mehrere mit der gleichen Nummer gibt, dann diese ebenfalls). Erstellt werden sollen diese Ordner unter dem Pfad "C:\Produktdaten_sammeln". Im Anschluss soll die Quell PDF gelöscht werden. Könnte also auch direkt mit move gemacht werden.

 

Ich hoffe, dass Ihr mir helfen könnt!

 

Vielen Dank vorweg!  :)

 

F0rcehunter



#2 testperson

testperson

    Board Veteran

  • 4.510 Beiträge

 

Geschrieben 24. April 2017 - 13:57

Hi,

 

muss es zwingend Batch sein? Mit PowerShell sollte das wesentlich einfacher umzusetzen sein.

 

Gruß

Jan


Good morning, that's a nice TNETENNBA!

#3 Dukel

Dukel

    Board Veteran

  • 9.244 Beiträge

 

Geschrieben 24. April 2017 - 13:57

Und wo ist genau deine Frage?

Soll das jemand für dich machen? Brauchst du einen Ansatz? Hast du schon etwas gescriptet und es gibt Fehler?


  • NilsK gefällt das

Stop making stupid people famous.


#4 F0rcehunter

F0rcehunter

    Newbie

  • 5 Beiträge

 

Geschrieben 24. April 2017 - 14:07

Hi,

 

es kann natürlich auch gerne in PowerShell gescriptet werden. Mir fehlen dazu einfach die Kenntnisse, daher hatte ich auf Eure Hilfe gehofft, solch ein Script zu erhalten oder es mit Euch zusammen zu "entwickeln".

 

Ich hatte einige Ansätze per Batch versucht, bin aber schnell an meine Grenzen gestoßen.



#5 Sunny61

Sunny61

    Expert Member

  • 22.089 Beiträge

 

Geschrieben 24. April 2017 - 14:08

Dann zeig doch deine Ansätze. Ein fertiges Script zu erwarten ist IMO die flasche Einstellung.


Gruppenrichtlinien: http://www.gruppenrichtlinien.de/

#6 Dukel

Dukel

    Board Veteran

  • 9.244 Beiträge

 

Geschrieben 24. April 2017 - 14:11

Wenn es zu komplex ist, dann teil die Aufgabe in mehrere Teile.

- Die 6-Stellige Nummer finden

- Ordner erstellen

- Dateien in Ordner verschieben

 

Zum schluss baust du die Teile zusammen.


Stop making stupid people famous.


#7 F0rcehunter

F0rcehunter

    Newbie

  • 5 Beiträge

 

Geschrieben 24. April 2017 - 14:31

Folgendes hatte ich zuvor gescripted:

@echo PDF Datei Verschiebung

set "Quelle=L:\Produktdaten_zur_Uebernahme\"
set "Typ=pdf" 
set "Ziel=L:\Produktdaten_sammeln\" 

pause

for %%i in ("%Quelle%\*.%Typ%") do ( 
	set "Nummer=%Quelle:~,6%"
	set NeuerOrdner=%Nummer%
	md "[%Ziel%]\%NeuerOrdner%"
	move ("%Quelle%\*.%Typ%") %Ziel%
	)

Wie gesagt, sind das meine ersten Versuche.



#8 Dukel

Dukel

    Board Veteran

  • 9.244 Beiträge

 

Geschrieben 24. April 2017 - 14:43

Und was kam bei deinen Versuchen heraus? Funktioniert dies oder nicht oder nur zum Teil?


Stop making stupid people famous.


#9 NilsK

NilsK

    Expert Member

  • 12.328 Beiträge

 

Geschrieben 24. April 2017 - 14:47

Moin,

 

ich vermute, dass das bisherige Skript noch eine Delayed Expansion braucht. Spätestens an der Stelle ist die PowerShell das bessere Werkzeug.

 

[Dateien kopieren und nummerieren per Batch | faq-o-matic.net]
https://www.faq-o-ma...eren-per-batch/

 

Gruß, Nils


Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#10 MurdocX

MurdocX

    Board Veteran

  • 544 Beiträge

 

Geschrieben 24. April 2017 - 17:03

Schau mal hier: 

 

Suchen & Umbenennen von Dateinamen mit Powershell

http://www.it-explor...mit-powershell/


Mit freundlicher Unterstützung
Jan


#11 F0rcehunter

F0rcehunter

    Newbie

  • 5 Beiträge

 

Geschrieben 26. April 2017 - 12:41

@Nils: Vielen Dank für deinen Tipp. Denke ohne die Delayed Expansion wirds nicht laufen.

 

 

Ich habe nun noch einiges rumprobiert, finde aber keinen Fehler. Wenn ich das Script ausführe, passiert nichts. Gehe ich das Thema Schrittweise an, dann schaffe ich das Kopieren von Dateien und das Erschaffen neuer Ordner. Nicht aber die ersten 6 Zeichen einer PDF zu kopieren und diese als Ordnernamen zu verwenden.

 

Woran es ebenfalls scheitert ist die FOR Schleife. Sobald ich die funktionierenden Teile des Kopiervorgangs und der Ordnererstellung in die FOR Schleife bringe, funktionieren diese nicht mehr.

 

Aktueller Script Versuch ist nun folgender:

@ECHO OFF

REM Setzen der Variablen Quelle und Ziel

SET Quelle=L:\Produktdaten_zur_Uebernahme\*.pdf
SET Ziel=L:\Produktdaten_sammeln\

REM Aktivieren der Delayed Expansion

SETLOCAL ENABLEDELAYEDEXPANSION

FOR "usebackq tokens=*" %%i IN (%Quelle%) DO (

	REM Kopieren der ersten 6 Zeichen eines PDFs
	set "Nummer=%Quelle%:~,6%"

	REM Setzen der Variablen zur Ordner Benennung
	set NeuerOrdner=%Nummer%

	REM Erstellen eines Ordners mit Benennung durch Variable NeuerOrdner
	mkdir "%Ziel%\%NeuerOrdner%"

	REM Verschiebung der PDF Datei in den neuen Ordner
	move %Quelle% %Ziel%
	)


#12 NilsK

NilsK

    Expert Member

  • 12.328 Beiträge

 

Geschrieben 26. April 2017 - 12:52

Moin,

 

die Laufvariable in deiner Schleife lautet nicht %Quelle%, sondern %%i.

 

Gruß, Nils


Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#13 F0rcehunter

F0rcehunter

    Newbie

  • 5 Beiträge

 

Geschrieben 27. April 2017 - 06:28   Lösung

Hallo,

 

anbei die funktionierende Lösung.

@echo off &setlocal enabledelayedexpansion 
SET "Quelle=M:\420_stav\Produktdaten_zur_Uebernahme\*.pdf" 
SET "Ziel=M:\420_stav\Produktdaten_sammeln"
 
FOR %%i IN ("%Quelle%") DO (
	set "name=%%~ni"
	set "newfolder=%ziel%\!name:~0,6!"
	if not exist "!newfolder!" md "!newfolder!" >nul
	move "%%i" "!newfolder!"
)

Ich bedanke mich für Eure Unterstützung.

 

Gruß