Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Powershell: Script läuft nur im Arbeitsverzeichnis

Frage Entwicklung Batch & Shell

Mitglied: AnkhMorpork

AnkhMorpork (Level 2) - Jetzt verbinden

20.12.2013, aktualisiert 21.12.2013, 1901 Aufrufe, 12 Kommentare, 1 Danke

Hallo zusammen,

habe folgendes Script am Laufen (Dateien umbenennen):

01.
$Quelle="D:\Scripts\Test_RenFile\" 
02.
$BasicName="Datei_" 
03.
$Extension=".txt" 
04.
$i=0 
05.
 
06.
$Dateien = Get-ChildItem -path $Quelle *.txt 
07.
foreach($Datei in $Dateien) { 
08.
	$i++ 
09.
	$AktuellerName=$BasicName+"{0:000}" -f $i+$Extension  
10.
	Rename-Item -Path $Datei -NewName $AktuellerName    
11.
}
Das Script läuft korrekt durch - aber nur wenn es sich im selben Verzeichnis befindet, wie die Dateien, die umbenannt werden sollen.
Gibt es eine Möglichkeit, das auch aus einem anderen Verzeichnis anzustoßen?

Ist vielleicht trivial, aber mein Verhältnis zur PS ist noch sehr novizial.
Win 7 Pro 64 bit, PS 3.0

Gruß an alle

ANKH
Mitglied: Xaero1982
20.12.2013 um 18:58 Uhr
Nabend,

01.
Rename-Item -Path $quelle""$Datei -NewName $AktuellerName   
Die Zeile damit ersetzen und dann sollte es gehen.

Gruß
Bitte warten ..
Mitglied: colinardo
LÖSUNG 20.12.2013, aktualisiert 21.12.2013
Hallo ANKH,
so geht des:
01.
$Quelle="D:\Scripts\Test_RenFile" 
02.
$BasicName="Datei_" 
03.
$i=0 
04.
$Dateien = Get-ChildItem -path "$Quelle\*.txt" -File 
05.
foreach($Datei in $Dateien) { 
06.
	$i++ 
07.
	$AktuellerName=$BasicName+"{0:000}" -f $i+$Datei.Extension  
08.
	Rename-Item -Path $Datei.Fullname -NewName $AktuellerName    
09.
}
$Datei.Fullname ist der volle Pfad zur Datei. Alternativ kannst du die Rename-Zeile auch so schreiben(ohne -path Parameter nur mit Übergabe des File-Objects):
Rename-Item $Datei -NewName $AktuellerName
Der Parameter -File bei Get-Childitem beschränkt die Rückgabe nur auf Dateien, es könnte ja ein Ordner z.B. Ordner.txt benannt sein, dieser würde dann fälschlich mit umbenannt werden (Achtung: Dieser Parameter funktioniert erst ab Powershell 3.0). Das Äquivalent dazu lautet:
$Dateien = Get-ChildItem -path "$Quelle\*.txt" | ?{!$_.PSIsContainer}
Grüße Uwe
Bitte warten ..
Mitglied: Xaero1982
20.12.2013 um 19:14 Uhr
Moin,

also zumindest unter Powershell v2 frisst er die Zeile nicht
01.
$Dateien = Get-ChildItem -path "$Quelle*.txt" -File 
Liegt an den " " und dem -File was er nicht kennt. Vielleicht ist es ja in der 3.0 anders. Installiere ich mal ...

Gruß
Bitte warten ..
Mitglied: colinardo
20.12.2013, aktualisiert um 19:21 Uhr
Zitat von Xaero1982:
Liegt an den " " und dem -File was er nicht kennt. Vielleicht ist es ja in der 3.0 anders. Installiere ich mal ...
Ja den Parameter kennt nur nur Powershell 3.0
alternative für Powershell 2.0:
$Dateien = Get-ChildItem -path "$Quelle\*.txt" | ?{!$_.PSIsContainer}
Bitte warten ..
Mitglied: Xaero1982
20.12.2013 um 19:18 Uhr
Okay. Na dann spar ich mir die Installation.

Gruß
Bitte warten ..
Mitglied: AnkhMorpork
20.12.2013 um 19:23 Uhr
Hallo Uwe,

wieder einmal Dank für deine Hilfe!

Werde das probieren - habe aber im Moment keinen Zugriff auf mein Script. Ich melde mich!

Gruß

ANKH
Bitte warten ..
Mitglied: AnkhMorpork
20.12.2013, aktualisiert um 19:31 Uhr
Hallo Xaero,

Test läuft ...demnächst ... Dank!

Gruß

ANKH

Edit: zu spät ...
Bitte warten ..
Mitglied: colinardo
20.12.2013, aktualisiert um 20:33 Uhr
Zitat von Xaero1982:
Rename-Item -Path $quelle""$Datei -NewName $AktuellerName
dann kannst du's auch direkt so schreiben:
Rename-Item -Path $quelle$Datei -NewName $AktuellerName  
Bitte warten ..
Mitglied: AnkhMorpork
20.12.2013 um 19:39 Uhr
Leute, you are klasse !!!

nur mal so ...

Gruß

ANKH
Bitte warten ..
Mitglied: Xaero1982
20.12.2013, aktualisiert um 20:07 Uhr
Mit der Powershell 2.0 funktioniert das wie ich es oben schrieb. MIt den "$variable" kommt er nicht klar, weil er das nicht als Variable erkennt. Daher klappt das da nicht. Wie das bei der 3.0 ist weiß ich nicht.

Stimm ich dir aber zu, dass deine Version die schönere ist

Gruß
Bitte warten ..
Mitglied: colinardo
20.12.2013, aktualisiert um 20:34 Uhr
Zitat von Xaero1982:
MIt den "$variable" kommt er nicht klar, weil er das
Das geht auch in Powershell 2.0, innerhalb von doppelten Anführungszeichen werden Variablen expandiert, wohingegen bei Benutzung von einfachen => '$Variable' keine Expansion stattfindet!
Will man auf eine Eigenschaft eines Objektes innerhalb von doppelten Anführungszeichen zugreifen muss man folgende Variante hernehmen:
"$($Variable.Eigenschaft)"
Probier mal dieses Beispiel:
01.
$Name = "Mustermann" 
02.
echo "Max $Name"
Das geht 100% in PS2.0

Uwe

p.s. denke jetzt ist alles geklärt
Beitrag dann noch auf gelöst setzen.
Bitte warten ..
Mitglied: AnkhMorpork
21.12.2013 um 14:18 Uhr
Hallo,

vielen Dank an euch. Wieder was dazugelernt. Ich arbeite weiter ...
Wie Scripting Guy Ed Wilson sinngemäß sagte: Es ist leicht Powershell zu lernen, aber nahezu unmöglich, sie zu beherrschen.

In diesem Sinne ...

ANKH
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst PowerShell Script Move-Item nach x Tagen (5)

Frage von lupolo zum Thema Batch & Shell ...

VB for Applications
Powershell Script aus VBA heraus ausführen (2)

Frage von mcnico1978 zum Thema VB for Applications ...

Batch & Shell
gelöst Powershell-Script als Admin über CMD ausführen (2)

Frage von Tobiased zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...