如何在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 方法字符串 ToString()
属性 属性 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是一个字符串。
我正在尝试将变量附加到文件名的开头。我见过的解决方案都使用“+”来连接,但这给了我错误。我怀疑是变量没有被识别为字符串。但我不知道如何解决这个问题。也许这不是问题所在。
这是一次尝试:
$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 方法字符串 ToString() 属性 属性 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是一个字符串。