重命名文件中每个文件名的前20个字符

rus*_*009 4 powershell windows-7

我试图在powershell中编写一个脚本来删除文件夹中每个MP3文件名的前20个字符,我创建了一个文件'test.ps'并将下面的powershell代码插入其中,

gci *.mp3 | rename-item -newname { [string]($_.name).substring(20) }
Run Code Online (Sandbox Code Playgroud)

当我在powershell.exe中运行此文件时,没有任何反应,

有人可以帮忙吗?谢谢.

Ken*_*ite 6

这可能会让你开始.(可能有更简洁的方法,但是当你需要在以后维护它时,它可以工作并且是可读的.:-))

我创建了一个文件夹C:\TempFiles,并在该文件夹中创建了以下文件:

TestFile1.txt
TestFile2.txt
TestFile3.txt
TestFile4.txt
Run Code Online (Sandbox Code Playgroud)

(我害怕,我用老式的方式创造了它们.<g>.我用过

for /l %i in (1,1,4) do echo "Testing" > TestFile%i.txt
Run Code Online (Sandbox Code Playgroud)

从实际的命令提示符.)

然后我PowerShell ISE从开始菜单打开,并运行此脚本.它创建一个array($files),只包含文件的名称,并处理每个文件的名称:

cd \TempFiles
$files = gci -name *.txt
foreach ($file in $files) {
  $thename = $file.substring(4);
  rename-item -path c:\TempFiles\$file -newname $thename
}
Run Code Online (Sandbox Code Playgroud)

这使文件夹包含:

File1.Txt
File2.Txt
File3.Txt
File4.Txt
File5.Txt
Run Code Online (Sandbox Code Playgroud)

要从命令行运行脚本,您需要更改一些默认的Windows安全设置.您可以通过了解他们PowerShell ISE的帮助文件(从菜单)和搜索about_scripts或执行help about_scriptsISE提示.请参阅How To Run A Script帮助文件中的子部分(它更容易阅读).