Zum Inhalt wechseln


Foto

Batch Ordner erstellen aus Dateinamen ohne Dateiendung

Windows Server 2000 Windows Server 2008

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

#1 plastikjoe

plastikjoe

    Newbie

  • 25 Beiträge

 

Geschrieben 17. Oktober 2017 - 11:24

Hallo Zusammen,

 

ich habe ein kleines Problem und komme nicht weiter.

 

Ein Ordner enthält unzählige zip Dateien mit dieser Syntax : alf_hugo_eva_o_o_o_b1_8_00_x12_erste_config.zip

 

Jetzt muss ich Oderner erstellen, in die wiederrum die zip Dateien gemovet werden sollen.

Die Ordner müssen aber so sein: alf_hugo_eva_o_o_o_b1_8_00_x12_erste .

 

Was ich bisher habe  : 

For /F %a in ('Dir /B *config.zip') Do echo md %a 

 

Ich bekomme das _config.zip nicht weg. 

 

Kann mir bitte jemand helfen.

tausend Dank


Bearbeitet von plastikjoe, 17. Oktober 2017 - 11:24.


#2 Dukel

Dukel

    Board Veteran

  • 9.297 Beiträge

 

Geschrieben 17. Oktober 2017 - 11:26

Nimm Powershell. Damit hast du mehr Spaß.


Stop making stupid people famous.


#3 plastikjoe

plastikjoe

    Newbie

  • 25 Beiträge

 

Geschrieben 17. Oktober 2017 - 11:28

Gute Idee, wie gehts in Powershell?



#4 Dukel

Dukel

    Board Veteran

  • 9.297 Beiträge

 

Geschrieben 17. Oktober 2017 - 11:36

Es kommt darauf was genau du willst. Alles ab dem letzten "_" abschneiden oder immer nur den String "_config"?


Stop making stupid people famous.


#5 plastikjoe

plastikjoe

    Newbie

  • 25 Beiträge

 

Geschrieben 17. Oktober 2017 - 11:40

am besten ab dem letzten _ soll alles weg. 


Bearbeitet von plastikjoe, 17. Oktober 2017 - 11:40.


#6 Sunny61

Sunny61

    Expert Member

  • 22.171 Beiträge

 

Geschrieben 17. Oktober 2017 - 12:04

Ohne Code posten zu wollen, Du mußt von Links bis zum ersten _ zählen, +1 und das ist deine neue Länge des Dateinamen.

Bearbeitet von Sunny61, 17. Oktober 2017 - 12:05.

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

#7 Dukel

Dukel

    Board Veteran

  • 9.297 Beiträge

 

Geschrieben 17. Oktober 2017 - 12:07

Auslesen aller Dateien mit entsprechenden String:

Get-ChildItem -Filter *config.zip

 

Name:

(Get-Item .\alf_hugo_eva_o_o_o_b1_8_00_x12_erste_config.zip).Name

 

Stelle des letzten "_":

(Get-Item .\alf_hugo_eva_o_o_o_b1_8_00_x12_erste_config.zip).Name.LastIndexOf('_')
36

 

Abgeschnittener Name:

(Get-Item .\alf_hugo_eva_o_o_o_b1_8_00_x12_erste_config.zip).Name.Substring(0, (Get-Item .\alf_hugo_eva_o_o_o_b1_8_00_x12_erste_config.zip).Name.LastIndexOf('_'))

Alternativ: (Get-Item .\alf_hugo_eva_o_o_o_b1_8_00_x12_erste_config.zip).Name.Substring(0, 36)

 

Alles noch zusammenbauen:

foreach($file in (Get-ChildItem -Filter *_config.zip)){
   New-Item -Type Directory -Path (Get-Item $file).Name.Substring(0, (Get-Item $file).Name.LastIndexOf('_'))
}

  • plastikjoe und Sunny61 gefällt das

Stop making stupid people famous.


#8 plastikjoe

plastikjoe

    Newbie

  • 25 Beiträge

 

Geschrieben 17. Oktober 2017 - 13:30

Super, Danke das funktioniert schon mal.

 

Wie kopiert man nun elegant noch diese zips in den jeweiligen Ordner?



#9 Sunny61

Sunny61

    Expert Member

  • 22.171 Beiträge

 

Geschrieben 17. Oktober 2017 - 13:52

Ebenfalls mit der Powershell. Du darfst auch mitarbeiten. http://powershellpra... Verzeichnissen
  • BOfH_666 gefällt das
Gruppenrichtlinien: http://www.gruppenrichtlinien.de/

#10 plastikjoe

plastikjoe

    Newbie

  • 25 Beiträge

 

Geschrieben 18. Oktober 2017 - 09:15

Hab mich mal selbst versucht. Habe es bloß nicht zusammen hinbekommen, also Ordner erstellen und anschließend moven.

Vielleicht hat ja noch jemand ein Tipp, wie ich die zusammen packe?

foreach($file in (Get-ChildItem -Filter *_config.zip)){
   New-Item -Type Directory -Path (Get-Item $file).Name.Substring(0, (Get-Item $file).Name.LastIndexOf('_'))
}

foreach($file in (Get-ChildItem -Filter *_config.zip)){
Move-Item  (Get-Item $file) -destination (Get-Item $file).Name.Substring(0, (Get-Item $file).Name.LastIndexOf('_'))
}

Vielen Dank an alle!



#11 Dukel

Dukel

    Board Veteran

  • 9.297 Beiträge

 

Geschrieben 18. Oktober 2017 - 19:24

Einfach das Move Item in die Foreach Schleife hinzufügen. Später schaust du dir mal die Powershell Grundlagen an.

foreach($file in (Get-ChildItem -Filter *_config.zip)){
   New-Item -Type Directory -Path (Get-Item $file).Name.Substring(0, (Get-Item $file).Name.LastIndexOf('_'))
   Move-Item  (Get-Item $file) -destination (Get-Item $file).Name.Substring(0, (Get-Item $file).Name.LastIndexOf('_'))
}

  • plastikjoe gefällt das

Stop making stupid people famous.


#12 plastikjoe

plastikjoe

    Newbie

  • 25 Beiträge

 

Geschrieben 19. Oktober 2017 - 07:49   Lösung

Jo, mach ich, danke Euch.





Auch mit einem oder mehreren der folgenden Tags versehen: Windows Server 2000, Windows Server 2008