held.christoph
Goto Top

Mittels Batch Ordner umbenennen und Dateien kopieren

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)

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

[Edit Biber] Codeformatierung. [/Edit]
Kommentar vom Moderator Biber am May 05, 2015 um 07:38:37 Uhr
Mittels Batch Ordner umbennen und Dateien kopieren
Set /a rgc+=1
#906
Profis wie auch Leihen kennen
alle das Wort "umbennen".

Mist, eine Silbe zuwenig für einen Schüttelreim oder ein Haiku.

Content-Key: 271073

Url: https://administrator.de/contentid/271073

Printed on: April 18, 2024 at 23:04 o'clock

Member: held.christoph
held.christoph May 05, 2015 at 08:15:22 (UTC)
Goto Top
Hi Biber

Entschuldige den Schreibfehler, war wohl etwas schnell mit tippen.
Member: Biber
Biber May 05, 2015 updated at 09:19:07 (UTC)
Goto Top
[OT]
Moin Christoph,

willkommen im Forum.
Mach dir keine Sorgen wegen des "Umbennen"-Schreibfehlers.
Das ist hier im Forum schon Hunderten passiert - egal, wie oft davor gewarnt wird.

Und selbst in weit verbreiteter Massensoftware (zB. der beliebte TotalCommander) gibt/gab es "Umbennen"-Buttons.

Dieses Wort "Umbenennen" hat offensichtlich zu viele "e"s und "n"s für das menschliche Gehirn

Grüße
Biber
[/OT]
Member: TlBERlUS
TlBERlUS May 05, 2015 at 09:05:23 (UTC)
Goto Top
Hi,

falls deine User mit Win7 Rechnern arbeiten, würde ich eher empfehlen, deine Anforderung mit Powershell umzusetzen, da sie IMHO leichter zu lernen/zu bearbeiten ist. In diesem Fall wäre dann "rename-item" etwas für dich.

Grüße,

Tiberius
Member: held.christoph
held.christoph May 05, 2015 at 09:17:43 (UTC)
Goto Top
Hallo Tiberius

Vielen Dank für deinen Input. Die betroffenen Personen arbeiten vorwiegend auf einer Citrix Umgebung unter Windows 7, jedoch kenne ich mich mit Powershell noch viel weniger aus als mit einer Batch-Datei.

Beste Grüsse

Christoph
Member: held.christoph
held.christoph May 05, 2015 at 09:19:48 (UTC)
Goto Top
Hello again,

da bin ich erleichtert wenn es nicht ganz so schlimm ist face-smile

War dieser Teil deines Kommentars

Set /a rgc+=1

Ein Lösungsansatz? Wenn ja wo müsste ich diesen platzieren?

Du siehst ich verstehe nicht sehr viel davon, leider.

Beste Grüsse

Christoph
Member: Biber
Biber May 05, 2015 at 09:33:31 (UTC)
Goto Top
[OT]
Moin Christoph,

nein, sorry, diese Codezeile zählt nur einen internen running gag counter namens rgc hoch.
Siehe

Hilft dir aber nicht direkt und ich wollte auch gar nicht von deinem eigentlichen Problem ablenken.

Grüße
Biber
[/OT]
Member: TlBERlUS
TlBERlUS May 05, 2015 at 09:46:06 (UTC)
Goto Top
Powershell:
<code/>$User = [Environment]::UserName
$Path = 'C:\Users\wc\desktop\Neuer Ordner'
$xml = gci $Path | where name -like "*xml*" | select -ExpandProperty Name
$xml = $xml.Replace(".xml","")

Rename-Item $Path -NewName $xml
Copy-Item C:\Users\wc\desktop\$xml -Destination \\test\c$
Member: held.christoph
held.christoph May 05, 2015 updated at 10:40:30 (UTC)
Goto Top
@88815

Vielen Dank schon einmal, hab dies auch versucht, musste zuerst einmal schauen wie ich eine Powershell Datei erstelle face-smile

Meine aktuelle Version

$User = [Environment]::UserName 
$Path = '\\sg1004z-v1\TOLHECH1$\Desktop\Neuer Ordner'  
$xml = gci $Path | where name -like "*xml*" | select -ExpandProperty Name   
$xml = $xml.Replace(".xml","")  

Rename-Item $Path -NewName $xml
Copy-Item \\sg1004z-v1\TOLHECH1$\Desktop\Neuer Ordner\$xml -Destination \\sg1004z-v1\TOLHECH1$\Desktop\Test2\Tedletter files (xml)\

Der Ordner erhält seinen neuen Namen wie es gedacht ist, jedoch funktioniert dies mit dem kopieren der Dateien nicht wie gewünscht. Ich erhalte da die folgende Meldung

Copy-Item : Es wurde kein Positionsparameter gefunden, der das Argument "files" akzeptiert.  
In \\sg1004z-v1\TOLHECH1$\Desktop\Unbenannt1.ps1:7 Zeichen:1
+ Copy-Item \\sg1004z-v1\TOLHECH1$\Desktop\$xml -Destination \\sg1004z-v1\TOLHECH1 ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Copy-Item], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.CopyItemCommand

Dann habe ich aber auch noch das Problem der Quelle, diese ist ja nicht mein User auf meinem Server, dies ist ein individueller User auf einem beliebigen Server, sprich "\\sg1004z-v1\TOLHECH1$\" müsste einer Variablen weichen.

Und dann noch ein Verständnisfrage, wie führt ein 0815 User ein solches Skript aus? Doppelklick auf die Datei öffnet bei mir den Editor mit dem Skript, geschieht aber nichts. face-confused
Member: TlBERlUS
TlBERlUS May 05, 2015 updated at 10:50:15 (UTC)
Goto Top
Zitat von @held.christoph:

Du hast bei Copy-Item Anführungszeichen in den Pfaden vergessen.

<code/>
$User = [Environment]::UserName
$Path = '\\sg1004z-v1\TOLHECH1$\Desktop\Neuer Ordner'
$xml = gci $Path | where name -like "*xml*" | select -ExpandProperty Name
$xml = $xml.Replace(".xml","")

Rename-Item $Path -NewName $xml
Copy-Item '\\sg1004z-v1\TOLHECH1$\Desktop\Neuer Ordner\$xml' -Destination '\\sg1004z-v1\TOLHECH1$\Desktop\Test2\Tedletter files
(xml)\'


Außerdem gibt es \\sg1004z-v1\TOLHECH1$\Desktop\Neuer Ordner\$xml nicht mehr, sondern nur noch \\sg1004z-v1\TOLHECH1$\Desktop\$xml
Ist das "$" bei THOLHECH1$ eigentlich gewollt?

Dann habe ich aber auch noch das Problem der Quelle, diese ist ja nicht mein User auf meinem Server, dies ist ein individueller
User auf einem beliebigen Server, sprich "\\sg1004z-v1\TOLHECH1$\" müsste einer Variablen weichen.
<code/>$server = [Environment]::MachineName

Und dann noch ein Verständnisfrage, wie führt ein 0815 User ein solches Skript aus? Doppelklick auf die Datei
öffnet bei mir den Editor mit dem Skript, geschieht aber nichts. face-confused
Rechtsklick auf Datei -> öffnen mit.. -> powershell.exe
Member: held.christoph
held.christoph May 05, 2015 at 11:40:18 (UTC)
Goto Top
Vielen Dank TIBERIUS für deine super Unterstützung wir kommen dem ganzen immer näher

$User = [Environment]::UserName
$Server = [Environment]::MachineName
$Path = 'Neuer Ordner'  
$xml = gci $Path | where name -like "*xml*" | select -ExpandProperty Name   
$xml = $xml.Replace(".xml","")   

Rename-Item $Path -NewName $xml
Copy-Item $xml -Destination 'Test2\Tedletter files (xml)\'  

Dies läuft nun ohne Fehlermeldung durch, jedoch dies mit dem kopieren ist immer noch NOK. Resultat ist nun, dass er im Ordner "Tedletter files (xml)" einen neuen Unterordner Namens "XML" erstellt.

Es funktioniert auch nicht wenn ich '$xml' schreibe.
Member: TlBERlUS
TlBERlUS May 05, 2015 updated at 12:40:07 (UTC)
Goto Top
Dies läuft nun ohne Fehlermeldung durch, jedoch dies mit dem kopieren ist immer noch NOK. Resultat ist nun, dass er im Ordner
"Tedletter files (xml)" einen neuen Unterordner Namens "XML" erstellt.

Es funktioniert auch nicht wenn ich '$xml' schreibe.

Kann es auch nicht, denn in der Copy-Item-Zeile muss der Pfad stehen, d.h. C:\Users\test\Desktop\XMLName.
Bei dir steht nur der Name der XML der kopiert wird, was bei Default-Einstellungen bedeutet, dass er "C:\Users\test\XMLName" kopieren will.

<code/>
$User = [Environment]::UserName
$Server = [Environment]::MachineName
$Path = "C:\Users\$User\Desktop\Neuer Ordner"
$xml = gci $Path | where name -like "*xml*" | select -ExpandProperty Name
$xml = $xml.Replace(".xml","")
$xml
Rename-Item $Path -NewName $xml
$path2 ="C:\Users\$User\Desktop\$xml"
Copy-Item $path2\ -Recurse -Destination "C:\$xml


Das sollte jetzt klappen (tut es zumindestens in meiner Testumgebung).
Member: TlBERlUS
TlBERlUS May 07, 2015 at 06:10:59 (UTC)
Goto Top
Guten Morgen,

falls dein Problem gelöst sein sollte, noch entsprechend
How can I mark a post as solved?

Grüße,

Tiberius