1

我想展平文件夹结构,并以一种方式将每个父目录名称包含到文件名中。我试过这个,但得到一个错误:

Missing ')' in method call

我完全不明白有什么问题

(ls -r -include *.ext) | % { mv -literal $_\3 $_\3.Name.Insert(0, [String]::Format("{0} - ", $_\3.Directory.Name))}
4

2 回答 2

4

试试这个:

ls . -r *.ext -name | ?{!$_.PSIsContainer} | mi -dest {$_ -replace '\\','_'} -whatif

或者如果在 V3 上:

ls . -r *.ext -name -file | mi -dest {$_ -replace '\\','_'} -whatif

删除-whatif以实际执行移动。

于 2012-12-19T21:28:29.130 回答
1

您想展平文件夹结构并将所有重命名的文件移动到根目录吗?例如:

$rootPath = 'C:\TempPath'
(ls $rootPath -r -include *.ext) | %{
    [string]$newFilename = $_.Name.Insert(0, [String]::Format("{0} - ", $_.Directory.Name))
    #write-host $newFilename
    mv -literal $_ "$rootPath$newFilename"
} 
于 2012-12-19T19:56:21.363 回答