schniefnase
Goto Top

XML-Datei 1000-fach duplizieren und umbenennen

Hallo zusammen,

ich habe eine Frage, die sich ggf. mit Powershell (oder einer Batch, was mir deutlich lieber wäre) lösen lässt.

Ich habe eine XML Datei, die ich zuerst einmal 1.000-fach duplizieren muss, da sie für einen Testcase gebraucht werden. Nennen wir sie "quelle.xml".
Diese 1.000 Dateien müssen in jeweils 5 durchnummerierte Pakete geschnürt werden. Ein Beispiel für 10 Dateien (dieser 1.000 Dateien):
  • H001_1_999200010_20210909085900_20220318090201_003.xml
  • H001_2_999200010_20210909085900_20220318090201_003.xml
  • H001_3_999200010_20210909085900_20220318090201_003.xml
  • H001_4_999200010_20210909085900_20220318090201_003.xml
  • H001_5_999200010_20210909085900_20220318090201_003.xml
  • H002_1_999200010_20210909085900_20220318090201_003.xml
  • H002_2_999200010_20210909085900_20220318090201_003.xml
  • H002_3_999200010_20210909085900_20220318090201_003.xml
  • H002_4_999200010_20210909085900_20220318090201_003.xml
  • H002_5_999200010_20210909085900_20220318090201_003.xml

Es gibt also immer 5x H001, 5x H002 und dann weiter 5x H003, jeweils nummeriert von "_1_" bis "_5_" direkt dahinter. Der Rest des Dateinamens kann für alle Dateien identisch bleiben.
Im Endeffekt ist das aber nicht wesentlich, denn die Dateibenamung mit genau diesem Schema für die 1.000 Dateien habe ich in einer Textdatei (liste.txt) stehen.

Ich benötige folglich ein Skript, dass diese liste.txt zeilenweise durchläuft, die vorhandene Datei dupliziert und die Benamung vorsieht.

Wenn wer eine Idee hat, dann wäre ich echt dankbar dafür.

Viele Grüße,
Marcel

Content-ID: 2422451184

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

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

MrCount
MrCount 06.04.2022 um 09:59:43 Uhr
Goto Top
Servus,

in Powershell z.B. so:

$filenames = gc .\liste.txt

foreach ($filename in $filenames)
{
	copy-item ".\quelle.xml" -Destination ".\$filename"  
}
MrCount
Lösung MrCount 06.04.2022 um 10:04:52 Uhr
Goto Top
In batch z.B. so:

@echo off

for /f "delims=" %%i in (liste.txt) do copy quelle.xml %%i  
TK1987
Lösung TK1987 06.04.2022 aktualisiert um 11:08:59 Uhr
Goto Top
Moin Marcel,

Powershell:
$Source = "C:\Pfad\zur\Quelle.xml"  
$Target = "C:\Zielordner"  
$Suffix = "999200010_20210909085900_20220318090201_003.xml"  

for ($x=1 ; $x -le 200 ; $x++) {
  for ($y=1 ; $y -le 5 ; $y++) {
    copy-item -Path $Source -Destination ("$Target\H{0:d3}_{1}_{2}" -f $x,$y,$Suffix)  
  }
}

ginge zwar zur Not auch per Batch, ich persönlich rate dir allerdings, mit der Zeit zu gehen und Powershell zu nutzen
@echo off

set Source=C:\Pfad\zur\Quelle.xml
set Target=C:\Zielordner
set Suffix=999200010_20210909085900_20220318090201_003.xml

for /l %%x in (1 1 200) do (
  for /l %%y in (1 1 5) do (
    call :Copy %%x %%y
  )
)

goto :EoF
:Copy
set Num=00%1
copy "%Source%" "%Target%\H%Num:~-3%_%2_%Suffix%"  

Gruß Thomas
Schniefnase
Schniefnase 06.04.2022 um 11:45:19 Uhr
Goto Top
Hallo zusammen,

also erst einmal vielen Dank. Ihr seid beide wirklich super face-smile
2 Gründe warum ich die Batch genommen habe.

1. Ich tue mich mit Powershell schwer. Da muss ich echt noch lernen.
2. Der gewichtigere Grund: Ich darf bei mir auf der Arbeit keine Powershell-Skripte ausführen (ist per Policy unterbunden). Dafür muss ich mir temporär Genehmigungen einholen - was ewig dauert (Konzern halt). Ich muss das dann immer über Kolleginnen und Kollegen laufen lassen die die Berechtigung haben - und kann eben nicht testen ob es geht.

Beide Batch-Varianten gehen. Die Variante für Powershell bestimmt auch. Habe ich mir gesichert. Nochmals vielen Dank.
Daemmerung
Daemmerung 06.04.2022 um 19:50:14 Uhr
Goto Top
PowerShell kansnt du immer ausführen, wenn du:

  • die powershell_ise.exe öffnest
  • dein Code reinhämmerst
  • diese markierst und F5 drückst.

Komischer Konzern, wenn ihr als Admins keine PowerShell-Scripte ausführen dürft.