Jump to content

ed_22

Members
  • Gesamte Inhalte

    8
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von ed_22

  1. Gerade eben schrieb tesso:

    Das hat die Powershell nicht einfach so gemacht. 

    Wenn vor und nach deinem Bindestrich Leerzeichen sind, gehören die beim Split mit zu dem Ergebnis. Woher soll Powershell wissen, das du das nicht willst?

    Die Hausaufgabe bleibt. :aetsch2:

    Hausaufgabe in Arbeit:

    Unterschied Hochkomma und Anführungszeichen in PowerShell - www.itnator.net

  2. Hallo zusammen und Danke für die Hilfe.

     

    Ich habe den Fehler gefunden.

     

     $StartFolder = 'D:\Test'
    
    #Dateien einlesen und splitten
    Get-ChildItem $StartFolder\*-*-*-* -File | ForEach-Object {
        $CD,$Titel,$Track = $_.Name -split ' - ',3
     
     # Aus den gesplitteten Teilen Ordner erstelln   
       $Path="$StartFolder\$CD-$Titel"
       if (!(Test-Path $Path)) {New-Item -Path $Path -ItemType Directory} 
       #New-Item -Path $StartFolder\$CD-$Titel -ItemType Directory 
    
    
     # Die entsprechenden Dateien in die richtigen Ordner kopieren (geht nicht)
       
       #$Name="$StartFolder\$CD-$Titel-$Track"
       move-Item -Path $_.FullName -Destination $Path
    
       
    
          
    
     }   

     

    Powershell hat an $Path ein Leerzeichen angehängt.

     

    Ich habe ihm beim Split gesagt das er bei '-' trennen soll. Dabei hat er das Leerzeichen vor dem - mit in die Variable genommen.

     

    Beim erstellen der Ordner hat ihn das nicht gestört erst als der move Befehl gekommen ist. Da hat er das Verzeichnis nicht mehr gefunden.

    Ich habe das bei dem Split Befehl jetzt in '- ' geändert und jetzt funktioniert auch alles.

     

    Es lag also nicht an den Hochkommas.

     

    Mfg

     

    Thorsten

  3. vor 4 Minuten schrieb tesso:

    Du sollst doppelte Hochkomma verwenden. 

     

    Dir fehlen die absoluten Grundlagen. Hausaufgabe: Unterschied zwischen einfachen und doppelten Hochkommas erkunden. :D

     

    Ich mache ja alles was du willst aber du meinst jetzt "Anführungsstriche oben".

    Vorher hast du nichts von doppelten Hochkommas gesagt.

     

    Aber geht auch nicht.

     

     move-Item -Path "$_.FullName" -Destination "$Path"

     

    Fehlermeldung:

     

    move-Item : Der Pfad "D:\Test\087 - Wolfsgesicht - 06 - Der Wolf zeigt seine Krallen.mp3.FullName" kann nicht gefunden werden, da er nicht vorhanden ist.
    In D:\Test\test 2.ps1:16 Zeichen:4
    +    move-Item -Path "$_.FullName" -Destination "$Path"
    +    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : ObjectNotFound: (D:\Test\087 - W...en.mp3.FullName:String) [Move-Item], ItemNotFoundException
        + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.MoveItemCommand
     
     

     

  4. vor 4 Minuten schrieb tesso:

    Dort wo du sie verwendest (beim move).

    Ein bisschen Mitarbeit erwarten wir hier schon.

    Ich hatte das schon probiert aber es hat nicht funktioniert deshalb meine nachfrage.

    Er löst dann die Variable nicht auf.

     

    Einmal für dich zum verdeutlichen was ich gemacht habe und welcher Fehler dann kommt:

     

     move-Item -Path '$_.FullName' -Destination '$Path'

     

    Fehlermeldung:

    move-Item : Der Pfad "D:\Test\$_.FullName" kann nicht gefunden werden, da er nicht vorhanden ist.
    In D:\Test\test 2.ps1:16 Zeichen:4
    +    move-Item -Path '$_.FullName' -Destination '$Path'
    +    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : ObjectNotFound: (D:\Test\$_.FullName:String) [Move-Item], ItemNotFoundException
        + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.MoveItemCommand

     

  5. vor 23 Minuten schrieb tesso:

    Da sind Leerzeichen im Pfad. Ich würde die Variablen bei Path und Destination mal in Hochkomma setzen.

     

     

    Ich habe das Skript jetzt so. Wo muss ich da die Hochkomma setzen?

     $StartFolder = 'D:\Test'
    
    #Dateien einlesen und splitten
    Get-ChildItem $StartFolder\*-*-*-* -File | ForEach-Object {
        $CD,$Titel,$Track = $_.Name -split '-',3
     
     # Aus den gesplitteten Teilen Ordner erstelln   
       $Path="$StartFolder\$CD-$Titel"
       if (!(Test-Path $Path)) {New-Item -Path $Path -ItemType Directory} 
       #New-Item -Path $StartFolder\$CD-$Titel -ItemType Directory 
    
    
     # Die entsprechenden Dateien in die richtigen Ordner kopieren (geht nicht)
       
       #$Name="$StartFolder\$CD-$Titel-$Track"
       move-Item -Path $_.FullName -Destination $Path
    
          
    
     }   

     

  6. Hallo,

     

    ich habe das gerade mal das Skript geändert und $_.FullName als Variable eingetragen.

     

    Es funktioniert leider nicht.

    Ich bekomme folgende Fehlermeldung:

     

    move-Item : Falscher Parameter.
    In D:\Test\test 2.ps1:16 Zeichen:4
    +    move-Item -Path $_.FullName -Destination $Path
    +    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : WriteError: (D:\Test\108 - D...8 - Soo-Ann.mp3:FileInfo) [Move-Item], IOException
        + FullyQualifiedErrorId : MoveFileInfoItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand

     

    Der Ordner wurde erstellt z.B.:

     

    D:\Test\108 - Die sieben Tore

     

    die Variable $Path gibt folgendes aus:

     

    PS D:\Test> echo $Path 
    D:\Test\108 - Die sieben Tore 

     

    Was kann das noch sein?

     

    Mfg

    Thorsten

     

     

     

  7. vor 4 Minuten schrieb BOfH_666:

    Thorsten,

     

    Du benutzt für Dein Move-Item eine Variable, die Du gar nicht deklariert/gefüllt hast. Statt

    
    move-Item -Path $Name -Destination $Path

    würde ich eher 

    
    move-Item -Path $_.FullName -Destination $Path

    verwenden. ;-) 

     

    Hallo, ich setze die Variable doch vorher mit 

     

    $Name="$StartFolder\$CD-$Titel-$Track"

    oder ist das nicht richtig?

     

    Woher bekommt Powershell denn $_.FullName b.z.w. was bedeutet das?

    vor 8 Minuten schrieb Nobbyaushb:

    Kommt mir so bekannt vor - sowas war schon mal…

    Da hast du recht. Daher habe ich mir ja auch bisher die Infos gezogen komme jetzt aber beim move nicht weiter

  8. Hallo zusammen,

    ich habe mich ein wenig in Powershell versucht.

    Ich möchte aus einem Verzeichnis die Dateien auslesen und anhand des Dateinamens
    Ordner erstellen. Danach sollen die Dateien die am Anfang so heißen wie der Ordner
    in diesen kopiert werden.

    Die Ordner werden erstellt aber die Dateien nicht kopiert.

    Es sind Hörspiele (mp3) die immer mit 045 - das Hoerspiel - 02 - das Kapitel.mp3
    benannt sind. Es geht immer um die ersten beiden Angaben. 045 - das Hoerspiel
    heißt dann der Ordner und alle Dateien die so Anfangen sollen da rein kopiert werden.

     

    Könnt ihr mir da auf die Sprünge helfen?

     

    $StartFolder = 'D:\Test'
    
    #Dateien einlesen und splitten
    Get-ChildItem $StartFolder\*-*-*-* -File | ForEach-Object {
        $CD,$Titel,$Track = $_.Name -split '-',3
     
     # Aus den gesplitteten Teilen Ordner erstelln   
       $Path="$StartFolder\$CD-$Titel"
       if (!(Test-Path $Path)) {New-Item -Path $Path -ItemType Directory} 
       #New-Item -Path $StartFolder\$CD-$Titel -ItemType Directory 
    
    
     # Die entsprechenden Dateien in die richtigen Ordner kopieren (geht nicht)
       
       $Name="$StartFolder\$CD-$Titel-$Track"
       move-Item -Path $Name -Destination $Path
    
          
    
     }   

     

     

    Besten Dank

     

    Thorsten

    PS: Es kommt immer folgende Fehlermeldung:

     

    move-Item : Falscher Parameter.
    In D:\Test\test 2.ps1:16 Zeichen:4
    +    move-Item -Path $Name -Destination $Path
    +    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : WriteError: (D:\Test\108 - D...8 - Soo-Ann.mp3:FileInfo) [Move-Item], IOException
        + FullyQualifiedErrorId : MoveFileInfoItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand

×
×
  • Neu erstellen...