如何在powershell中将变量放入文件名

How to put a variable into a filename in powershell

我正在尝试将变量附加到文件名的开头。我见过的解决方案都使用“+”来连接,但这给了我错误。我怀疑是变量没有被识别为字符串。但我不知道如何解决这个问题。也许这不是问题所在。

这是一次尝试:

$JobNum = (get-item $Path).parent.parent.parent
Get-ChildItem Of*.pdf | rename-item -newname { $JobNum + "_"+ $_.name }

错误是:“参数 'NewName' 的脚本块输入失败。方法调用失败,因为 [System.IO.DirectoryInfo] 不包含名为 'op_Addition' 的方法。

这是另一个。我在 $JobNum 中添加了一个字符串,试图强制 powershell 将其视为一个字符串,我先在文件上放置了一个静态作业编号,然后尝试替换它。

$JobNum = -join ((get-item $Path ).parent.parent.parent , "_")
Get-ChildItem Of*.pdf | rename-item -newname { $_.Name -replace 'O', '99999_O' }
Get-ChildItem 99999* | rename-item -newname { $_.name -replace "99999_", $JobNum }

错误是“无法重命名指定的目标,因为它表示路径或设备名称。

感谢任何帮助。

附加信息: $职位编号 |获取成员

名称成员类型定义


LinkType 代码属性 System.StringLinkType{get=GetLinkType;} 模式代码属性 System.String 模式{get=Mode;} ModeWithoutHardLink 代码属性 System.String ModeWithoutHardLink{get=ModeWithoutHardLink;} 目标代码属性 System.String 目标{get=GetTarget;} 创建方法 void Create() CreateSubdirectory 方法 System.IO.DirectoryInfo CreateSubdirectory(字符串路径) 删除方法 void Delete(), void Delete(bool recursive) EnumerateDirectories 方法 System.Collections.Generic.IEnumerable[System.IO.DirectoryInfo] EnumerateDirec… EnumerateFiles 方法 System.Collections.Generic.IEnumerable[System.IO.FileInfo] EnumerateFiles(), S ... EnumerateFileSystemInfos 方法 System.Collections.Generic.IEnumerable[System.IO.FileSystemInfo] EnumerateFile… 等于方法 bool Equals(System.Object obj) GetDirectories 方法 System.IO.DirectoryInfo[] GetDirectories(), System.IO.DirectoryInfo[] GetDirec ... GetFiles 方法 System.IO.FileInfo[] GetFiles(), System.IO.FileInfo[] GetFiles(string searchPa ... GetFileSystemInfos 方法 System.IO.FileSystemInfo[] GetFileSystemInfos(), System.IO.FileSystemInfo[] Ge ... GetHashCode 方法 int GetHashCode() GetLifetimeService 方法 System.Object GetLifetimeService() GetObjectData 方法 void GetObjectData(System.Runtime.Serialization.SerializationInfo 信息,系统… GetType 方法类型 GetType() InitializeLifetimeService 方法 System.Object InitializeLifetimeService() MoveTo 方法 void MoveTo(string destDirName) 刷新方法 void Refresh() ToString 方法字符串 ToS​​tring() 属性 属性 System.IO.FileAttributes 属性 {get;set;} 创建时间 属性 datetime 创建时间 {get;set;}

J Web,$JobNum 是字符串还是某种对象?

当 $JobNum 是一个字符串时,我能够让你的原始语法起作用。

PS C:\Users\vvangor001\documents\Scripts - Local> $JobNum = "Job001"
PS C:\Users\vvangor001\documents\Scripts - Local>
PS C:\Users\vvangor001\documents\Scripts - Local>
PS C:\Users\vvangor001\documents\Scripts - Local>
PS C:\Users\vvangor001\documents\Scripts - Local> Get-ChildItem .\*.jpg

    Directory: C:\Users\vvangor001\documents\Scripts - Local

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2/21/2019  12:13 PM         153628 WebEx-20190221-2.JPG
-a----        2/21/2019  12:14 PM         165229 WebEx-20190221-3.JPG
-a----        2/21/2019  12:12 PM         100058 WebEx-20190221.JPG

PS C:\Users\vvangor001\documents\Scripts - Local>
PS C:\Users\vvangor001\documents\Scripts - Local>
PS C:\Users\vvangor001\documents\Scripts - Local>
PS C:\Users\vvangor001\documents\Scripts - Local> Get-ChildItem .\*.jpg | Rename-item -NewName { $JobNum + "_" + $_.Name }
PS C:\Users\vvangor001\documents\Scripts - Local>
PS C:\Users\vvangor001\documents\Scripts - Local>
PS C:\Users\vvangor001\documents\Scripts - Local>
PS C:\Users\vvangor001\documents\Scripts - Local> Get-ChildItem .\*.jpg


    Directory: C:\Users\vvangor001\documents\Scripts - Local


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2/21/2019  12:13 PM         153628 Job001_WebEx-20190221-2.JPG
-a----        2/21/2019  12:14 PM         165229 Job001_WebEx-20190221-3.JPG
-a----        2/21/2019  12:12 PM         100058 Job001_WebEx-20190221.JPG


PS C:\Users\vvangor001\documents\Scripts - Local>

要确定 $JobNum 的样子,运行 这个命令:

PS C:\Users\vvangor001\documents\Scripts - Local> $JobNum | Get-Member


   TypeName: System.String

Name             MemberType            Definition
----             ----------            ----------
Clone            Method                System.Object Clone(), System.Object ICloneable.Clone()
...

在上面的例子中,我们可以看到$JobNum是一个字符串。