我正在尝试使用PowerShell和正则表达式递归重命名一堆TFS文件夹tf rename
,但我遇到了PowerShell的一些问题,因为我没有花太多时间使用它.这是我已经把到目前为止更换领导有,但它不工作:5
2.3.2
dir | foreach { tf rename $_ { $_.Name -replace '^5', '2.3.2' } }
Run Code Online (Sandbox Code Playgroud)
实际结果:
Unrecognized command option 'encodedCommand'. Unrecognized command option 'encodedCommand'. Unrecognized command option 'encodedCommand'. Unrecognized command option 'encodedCommand'. ...etc.
更新:
相反,我做了以下几点:
dir | foreach { $newname = $_.Name -replace "^5", "2.3.2"; tf rename $_ $newname }
Run Code Online (Sandbox Code Playgroud)
我的下一个目标是使这个recurse子目录,但这似乎更具挑战性(改变它dir -recurse
使它在父文件夹之后由于某种原因退出).
Kei*_*ill 14
我将首先过滤5*,因此您只处理以5开头的名称.此外,在这种情况下,由于tf.exe不是PowerShell cmdlet,因此您不希望使用scriptblock来确定新名称.只需使用这样的分组表达式:
dir -filter 5* | foreach { tf rename $_ ($_.Name -replace '^5', '2.3.2')}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,当您尝试将参数传递到这样的本机EXE时,使用PowerShell社区扩展中的echoargs.exe实用程序非常有帮助.这就是它告诉我你原来的方法:
6# dir -filter 5* | foreach { echoargs rename $_ { $_.Name -replace '^5', '2.3.2' } }
Arg 0 is <rename>
Arg 1 is <5foo.txt>
Arg 2 is <-encodedCommand>
Arg 3 is <IAAkAF8ALgBOAGEAbQBlACAALQByAGUAcABsAGEAYwBlACAAJwBeADUAJwAsACAAJwAyAC4AMwAuADIAJwAgAA==>
Arg 4 is <-inputFormat>
Arg 5 is <xml>
Arg 6 is <-outputFormat>
Arg 7 is <text>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5781 次 |
最近记录: |