WinFuture-Forum.de: Mittels Batch Ordner umbennen und Dateien kopieren - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Mittels Batch Ordner umbennen und Dateien kopieren


#1 Mitglied ist offline   held.christoph 

  • Gruppe: Mitglieder
  • Beiträge: 7
  • Beigetreten: 29. April 15
  • Reputation: 0

geschrieben 29. April 2015 - 07:54

Guten Tag allerseits

Ich bin absoluter Leihe und konnte Dank mehr oder weniger grossen Suche in den Foren bereits einiges selbst erarbeiten stehe aber nun doch noch vor einem letzten kleinen Problem.

Ausgangslage
Unter Windows 7 muss eine Arbeit verrichtet werden bei der Dateien generiert werden, die jeweils in den Ordner "Neuer Ordner" auf dem Desktop eingefügt werden.

Es sind immer die selben Dateitypen aber nicht die selben Dateinamen. 1x eine XML, 1x eine XLSX

Nun musste bis anhin der Ordnername "Neuer Ordner" jeweils manuell angepasst werden (der Ordnername ist variabel korrespondiert jedoch mit dem Namen der XML Datei) und die zwei Dateien manuell in die jeweiligen Ordner auf einem Netzlaufwerk (Pfad bleibt immer identisch) verschoben werden.

Ziel
Ich würde gerne den Mitarbeitenden die diese Aufgabe ausführen müssen ein Batch zur Verfügung stellen, welchen sie auf ihrem Desktop platzieren können und beim auslösen folgendes passiert:

1. "Neuer Ordner" wird automatisch umbenannt mit dem Namen der XML Datei
2. XML Datei wird in den Ordner "XML" auf dem Netzlaufwerk kopiert (WICHTIG nicht verschoben)
3. XLSX Datei wird in den Ordner "XLSX" auf dem Netzlaufwerk kopiert (WICHTIG nicht verschoben)

Aktuelles Resultat (nur Lokal aber da muss ich nur die Pfade anpassen)

Zitat

for %%i in (\Desktop\Test\*.xml) do @(md "%%~dpi%%~ni" && move "%%~dpni.*" "%%~dpi%%-ni\")

copy "\Desktop\Test\*.xml" "\\sg1004z-v1\TOLHECH1$\Desktop\Test2\Tedletter files (xml)\"
copy "\Desktop\Test\*.xml" "\\sg1004z-v1\TOLHECH1$\Desktop\Test2\Plannedwork files (xml)\"
copy "\Desktop\Test\*.xls" "\\sg1004z-v1\TOLHECH1$\Desktop\Test2\ISP Info (xls)\"


Damit habe ich folgendes erreicht

1. im Ordner "Neuer Ordner" wird ein neuer Ordner mit dem Namen der XML Datei generiert
2. die XML Datei wird in die dafür vorgesehenen Ordner kopiert
3. die XLSX Datei wird in den dafür vorgesehenen Ordner kopiert

Also eigentlich schon ziemlich nahe am Ziel nur, dass nicht ein neuer Ordner im "Neuer Ordner" mit dem Namen der XML erstellt werden sollte, sondern der "Neue Ordner" umbenannt werden sollte.

Kann mir womöglich jemand helfen und sagen wo der Fehler liegt?

Vielen Dank schon einmal für eure Unterstützung

Beste Grüsse

Christoph

Dieser Beitrag wurde von held.christoph bearbeitet: 29. April 2015 - 07:59

0

Anzeige



#2 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 01. Mai 2015 - 07:59

Das ein neuer Ordner erstellt wird, ist auch völlig richtig da du diesen Befehl ja mittels md startest.
Wenn du hingegen
for %%i in (\Desktop\Test\*.xml) do @(ren "\Desktop\Test\Neuer Ordner" "%%~dpi%%~ni" && move "%%~dpni.*" "%%~dpi%%-ni\")
nimmst, sollte es gehen. (Ungetestet)
0

#3 Mitglied ist offline   held.christoph 

  • Gruppe: Mitglieder
  • Beiträge: 7
  • Beigetreten: 29. April 15
  • Reputation: 0

geschrieben 04. Mai 2015 - 09:19

@d4rkn3ss4ev3r

Besten Dank für die Unterstützung und den Tipp, funktioniert aber leider nicht.
0

#4 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 04. Mai 2015 - 09:32

Auch nicht wenn du vorher mittels
cd /D C:\Users\%username%\Desktop
zum Desktop navigierst? (Im Code muss dann "\Desktop" entfernt werden, da du ja schon dort bist.
0

#5 Mitglied ist offline   held.christoph 

  • Gruppe: Mitglieder
  • Beiträge: 7
  • Beigetreten: 29. April 15
  • Reputation: 0

geschrieben 04. Mai 2015 - 09:38

für mich schon fast wieder zu hoch :-/

Müsste ich diesen Befehl einfach auf die erste Zeile kopieren des Batch-Files?
0

#6 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 04. Mai 2015 - 11:29

Den cd Befehl in einer Zeile vor dem for Befehl, ja
0

#7 Mitglied ist offline   held.christoph 

  • Gruppe: Mitglieder
  • Beiträge: 7
  • Beigetreten: 29. April 15
  • Reputation: 0

geschrieben 05. Mai 2015 - 06:44

Das würde ja dann folgendes ergeben

Zitat

cd /D C:\Users\%username%\Desktop
for %%i in (\Test\*.xml) do @(ren "\Test" "%%~dpi%%~ni" && move "%%~dpni.*" "%%~dpi%%-ni\")

copy "\Test\*.xml" "\\sg1004z-v1\TOLHECH1$\Desktop\Test2\Tedletter files (xml)\"
copy "\Test\*.xml" "\\sg1004z-v1\TOLHECH1$\Desktop\Test2\Plannedwork files (xml)\"
copy "\Test\*.xls" "\\sg1004z-v1\TOLHECH1$\Desktop\Test2\ISP Info (xls)\"


was aber auch nicht funktioniert



Eine Alternative wäre auch, dass die Dateien unter "Neuer Ordner" in den neu erstellten Ordner (Neuer Ordner\Ordnername\) kopiert würden, nur als mögliche Alternative, schöner wäre es wenn es einfach diesen "Neuer Ordner" umbenennen würde.

Danke
0

#8 Mitglied ist offline   DK2000 

  • Gruppe: Administration
  • Beiträge: 19.718
  • Beigetreten: 19. August 04
  • Reputation: 1.435
  • Geschlecht:Männlich
  • Wohnort:Oben auf dem Berg
  • Interessen:Essen, PC, Filme, TV Serien...

geschrieben 05. Mai 2015 - 13:32

So ganz steige ich hier noch nicht durch.

Erstmal würde ich mit Variablen Arbeiten, welche den Quell und den Zielordner fest bestimmen In dem Falle wäre es egal, an welchem Ort sich die Batch befindet. Dann kann man sich dieses cd Befehl sparen.

Was soll denn genau passieren?
Ich bin kein Toilettenpapier-Hamster.
---
Ich bin ein kleiner, schnickeldischnuckeliger Tiger aus dem Schwarzwald.
Alle haben mich ganz dolle lila lieb.
0

#9 Mitglied ist offline   held.christoph 

  • Gruppe: Mitglieder
  • Beiträge: 7
  • Beigetreten: 29. April 15
  • Reputation: 0

geschrieben 05. Mai 2015 - 14:22

DK2000

Im ersten Beitrag habe ich bereits einiges geschildert, hier noch einige Zusatzinfos.

Die geschilderte Arbeit wird in einem Team von 10 Mitarbeitenden mit unterschiedlichen Usernamen/-accounts welche auf unterschiedlichen Servern liegen ausgeübt. Daher ist der Pfad der Quelle, zumindest alles was vor \Desktop\... kommt auch jeweils unterschiedlich und somit eine eindeutige Quellenangabe nicht möglich.

Ziel ist, dass jeder Mitarbeitende auch neue diesen Batch nutzen kann ohne dass er angepasst werden muss.

Die Aufgabe die ausgeführt werden muss und die ich gerne vereinfachen möchte ist glaube ich ansonsten sehr gut beschrieben.
0

#10 Mitglied ist offline   DK2000 

  • Gruppe: Administration
  • Beiträge: 19.718
  • Beigetreten: 19. August 04
  • Reputation: 1.435
  • Geschlecht:Männlich
  • Wohnort:Oben auf dem Berg
  • Interessen:Essen, PC, Filme, TV Serien...

geschrieben 05. Mai 2015 - 14:34

Normaler Weise reicht diese Definition für den Quellpafad:

%userprofile%\Desktop

Das würde sich dann automatisch in C:\User\<Benutzername>\Desktop ändern, wobei sich <Benutzername> jeweils in den Namen des angemeldeten Benutzers ändert.

So mache ich das jedenfalls immer. Schaue mal nach, ob das bei Dir umsetzbar ist.
Ich bin kein Toilettenpapier-Hamster.
---
Ich bin ein kleiner, schnickeldischnuckeliger Tiger aus dem Schwarzwald.
Alle haben mich ganz dolle lila lieb.
0

#11 Mitglied ist offline   held.christoph 

  • Gruppe: Mitglieder
  • Beiträge: 7
  • Beigetreten: 29. April 15
  • Reputation: 0

geschrieben 05. Mai 2015 - 14:59

DK2000

Besten Dank, dies war das kleinere Problem.

Das grössere Problem, was mir nicht gelingt ist, den Ordner "Neuer Ordner" (im Beispiel mit "Test" beschrieben) mit dem Namen der sich darin befindenden .xml Datei umzubenennen.

Also geht es primär noch um die folgende Zeile

Zitat

for %%i in (\Test\*.xml) do @(ren "\Test" "%%~dpi%%~ni" && move "%%~dpni.*" "%%~dpi%%-ni\")


die nicht funktioniert.
0

#12 Mitglied ist offline   DK2000 

  • Gruppe: Administration
  • Beiträge: 19.718
  • Beigetreten: 19. August 04
  • Reputation: 1.435
  • Geschlecht:Männlich
  • Wohnort:Oben auf dem Berg
  • Interessen:Essen, PC, Filme, TV Serien...

geschrieben 05. Mai 2015 - 15:10

Wo kommt denn der Ornder 'Neuer Ordner' her?

Genauso, wo kommt 'Test2' her?

So wie ich das verstehe, soll das so ablaufen:

Im Ordner \Test gibt es *.xml Dateien

Es soll jeweils ein Ordner mit dem Namen der XML Datei generiert werden, also

\Test\Datei1.xml -> Ordner \Test\Datei1 erstellen -> Datei1.xml in den Ordner Datei1 kopieren.

\Test\Datei2.xml -> Ordner \Test\Datei2 erstellen -> Datei2.xml in den Ordner Datei2 kopieren.

Mir ist momentan nicht so ganz klar, wo da was erstellt werden soll und wo was hin soll.
Ich bin kein Toilettenpapier-Hamster.
---
Ich bin ein kleiner, schnickeldischnuckeliger Tiger aus dem Schwarzwald.
Alle haben mich ganz dolle lila lieb.
0

#13 Mitglied ist offline   held.christoph 

  • Gruppe: Mitglieder
  • Beiträge: 7
  • Beigetreten: 29. April 15
  • Reputation: 0

geschrieben 05. Mai 2015 - 16:06

OK ich gebe mir Mühe es hoffentlich verständlicher und Schritt zu Schritt zu erklären.

Situation IST

1. Schritt
Es wird manuell ein neuer Ordner auf dem Desktop erstellt (z.B. rechte Maustaste -> Neu -> etc.) mit dem Namen "Neuer Ordner"

2. Schritt
im Tool XY werden die Datei xy.xml und az.xls generiert die in den sich auf dem Desktop befindenden Ordner "Neuer Ordner" abgelegt werden

3. Schritt
"Neuer Ordner" öffnen und Dateiname von xml Datei in diesem Beispiel xy kopieren

4. Schritt
den Ordner "Neuer Ordner" auf "xy" umbenennen

5. Schritt
xy.xml im Ordner "xy" kopieren und in einen spezifischen und statischen Ordner auf einem immer gleichbleibenden Share einfügen

6. Schritt
az.xls im Ordner "xy" kopieren und in einem spezifischen und statischen Ordner auf einem immer gleichbleibenden Share einfügen

7. Schritt
Den Ordner "xy" manuell vom Desktop auf einen gleichbleibenden Share in variablen Ordner kopieren


So und nun mit dem Batch will ich erreichen, dass die Schritte 3 - 6 automatisiert werden, durch das auslösen des Batches.

Hier auch noch mal den Code angepasst mit den korrekten ausdrücken:

Zitat

for %%i in (\Neuer Ordner\*.xml) do @(ren "\Neuer Ordner" "%%~dpi%%~ni" && move "%%~dpni.*" "%%~dpi%%-ni\")


Hoffe es ist so etwas verständlicher.
0

#14 Mitglied ist offline   DK2000 

  • Gruppe: Administration
  • Beiträge: 19.718
  • Beigetreten: 19. August 04
  • Reputation: 1.435
  • Geschlecht:Männlich
  • Wohnort:Oben auf dem Berg
  • Interessen:Essen, PC, Filme, TV Serien...

geschrieben 05. Mai 2015 - 16:19

Schritt 2 und Schritt 5 sind mir da noch nicht ganz klar.

Schritt 2 verstehe ich so, dass die beiden Dateien in "Neuer Ordner" abgelegt werden. In Schritt 5 soll die Datie xy.xml in den Ordner xy kopiert werden, was aber nicht gehen würde, wenn sie schon in dem Ordner ist. Aus 'Neuer Order' wurde ja 'xy'.

Oder liegen die beiden Dateien auf dem Desktop? Dann würde es mit dem kopieren gehen.

Wenn die Datei im Ordner 'Neuer Ordner' liegt, würde das so gehen:

@echo off

set _source=%userprofile%\desktop

if exist "%_source%\Neuer Ordner" (
   for %%i in ("%_source%\Neuer Ordner\*.xml") do (
      ren "%_source%\Neuer Ordner" "%%~ni"
      set _newsource=%_source%\%%~ni
   )
   copy "%_newsource%\*.xml" "\\sg1004z-v1\TOLHECH1$\Desktop\Test2\Tedletter files (xml)\"
   copy "%_newsource%\*.xml" "\\sg1004z-v1\TOLHECH1$\Desktop\Test2\Plannedwork files (xml)\"
   copy "%_newsource%\*.xls" "\\sg1004z-v1\TOLHECH1$\Desktop\Test2\ISP Info (xls)\"
)

Nur ist das Kopieren der Datei xy.xml nach xy überflüssig, da sie sich ja jetzt in dem Ordner befindet. 'Neuer Ordner' gibt es ja nicht mehr.
Ich bin kein Toilettenpapier-Hamster.
---
Ich bin ein kleiner, schnickeldischnuckeliger Tiger aus dem Schwarzwald.
Alle haben mich ganz dolle lila lieb.
0

#15 Mitglied ist offline   Q 1 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.233
  • Beigetreten: 11. Januar 14
  • Reputation: 153
  • Geschlecht:Männlich

geschrieben 05. Mai 2015 - 16:29

Er möchte einen Ordner so nennen, wie die eine darin befindliche xml-Datei heißt. :unsure:

Edit: Erledigt. :D

Dieser Beitrag wurde von Q 1 bearbeitet: 05. Mai 2015 - 16:44

Im Budapester Memorandum bekräftigten Russland, die Vereinigten Staaten von Amerika und das Vereinigte Königreich, als Gegenleistung für einen Nuklearwaffenverzicht, gemeinsam in drei getrennten Erklärungen jeweils gegenüber Kasachstan, Belarus und der Ukraine erneut ihre bereits bestehenden Verpflichtungen, die Souveränität und die bestehenden Grenzen der Länder, das UN-Gewaltverbot und weitere Verpflichtungen zu achten.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0