dravisher Skrevet 27. august 2006 Del Skrevet 27. august 2006 Heisan. Jeg har støtt på et problem med braketter ("[" og "]") i powershell. Jeg er ikke helt sikker på hva problemet er, men det virker som om powershell tolker brakettene som noe spesielt selv om de er i en tekststreng. Dette ville i så fall vært veldig uheldig, siden slike braketter er lovlig i filnavn osv. Jeg har laget et script som behandler .par2 og .rar filer automagisk, men dette failer altså hvis filnavnene har braketter i seg. Jeg tenker derfor å ganske enkelt fjerne alle braketter først i scriptet, men som eksempelet under viser så er ikke det så lett. For "(" og ")" funker metoden fint: PS C:\test\test\w00tfiles> get-childitem Directory: Microsoft.PowerShell.Core\FileSystem::C:\test\test\w00tfiles Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2006.08.26 11:22 50000000 (w00t).part01.rar -a--- 2006.08.26 12:10 103136 (w00t).part02.rar PS C:\test\test\w00tfiles> $x = get-childitem PS C:\test\test\w00tfiles> foreach($i in $x){$newname = (($i.name).replace("(","")).replace(")",""); rename-item $i $newname} PS C:\test\test\w00tfiles> get-childitem Directory: Microsoft.PowerShell.Core\FileSystem::C:\test\test\w00tfiles Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2006.08.26 11:22 50000000 w00t.part01.rar -a--- 2006.08.26 12:10 103136 w00t.part02.rar PS C:\test\test\w00tfiles> Mens for "[" og "]" fungerer det ikke: PS C:\test\test\w00tfiles> get-childitem Directory: Microsoft.PowerShell.Core\FileSystem::C:\test\test\w00tfiles Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2006.08.26 11:22 50000000 [w00t].part01.rar -a--- 2006.08.26 12:10 103136 [w00t].part02.rar PS C:\test\test\w00tfiles> $x = get-childitem PS C:\test\test\w00tfiles> foreach($i in $x){$newname = (($i.name).replace("[","")).replace("]","") rename-item $i $newname} Rename-Item : Cannot rename because item at '[w00t].part01.rar' does not exist. At line:1 char:86 + foreach($i in $x){$newname = (($i.name).replace("[","")).replace("]",""); rename-item <<<< $i $n ewname} Rename-Item : Cannot rename because item at '[w00t].part02.rar' does not exist. At line:1 char:86 + foreach($i in $x){$newname = (($i.name).replace("[","")).replace("]",""); rename-item <<<< $i $n ewname} PS C:\test\test\w00tfiles> get-childitem Directory: Microsoft.PowerShell.Core\FileSystem::C:\test\test\w00tfiles Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2006.08.26 11:22 50000000 [w00t].part01.rar -a--- 2006.08.26 12:10 103136 [w00t].part02.rar PS C:\test\test\w00tfiles> Noen som kan hjelpe? Er dette en feil / dårlig design i powershell, eller gjør jeg noe galt? Takker for hjelp Lenke til kommentar
dravisher Skrevet 31. august 2006 Forfatter Del Skrevet 31. august 2006 Virker som om dette er et problem i PowerShell RC1. Her og i utviklerbloggen sies det at dette blir forbedret i RC2. Det vil da være mulig å si "-LiteralPath", som skal fikse problemer som det over. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå