Gå til innhold

Problem med braketter i PowerShell


Anbefalte innlegg

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
Videoannonse
Annonse

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...