0

名前に「-」ハイフンを含む既存のフォルダーを、同じ名前の一部を持つ親フォルダーに移動するスクリプトを作成しようとしています。

例:

c:\12345-01 を c:\12345\ に移動して、c:\12345\12345-01 のようにします。

問題は、ハイフンの前の文字数が同じではないことです。ハイフンの前の文字数は 3 ~ 6 文字です。ここと他の場所で近いいくつかのスニペットを見つけましたが、ファイル名の文字数を指定しているため、それらは機能しません

For Each objFile in objFolder.Files
    strName = Left(objFile.Name, 3)

これは、すべてのファイル名が 3 文字の場合に機能します。

それは理にかなっていますか?

4

2 に答える 2

3

区切り文字で名前を分割する必要があります。C ドライブのルートから次を実行すると、探している構造が得られます。

Get-ChildItem | where-object {
  ($_.PSIsContainer) -and ($_.Name.contains("-"))
} | foreach-object {
  new-item -itemtype Directory -path $($_.name.split("-")[0])
  move-item $_ -Destination $($_.name.split("-")[0])
}
于 2013-08-12T20:41:16.540 に答える