Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重命名文件夹中的所有文件,并使用PowerShell将其名称替换为creationTime_Powershell_Rename - Fatal编程技术网

重命名文件夹中的所有文件,并使用PowerShell将其名称替换为creationTime

重命名文件夹中的所有文件,并使用PowerShell将其名称替换为creationTime,powershell,rename,Powershell,Rename,我想写一个函数,用当前名称和creatiomTime替换每个文件的名称。 这是我的职责: Function RenameFolderFiles{ Param([String]$path) Get-Childitem $path -Recurse | Rename-Item -NewName { $_.Name -Replace "$_.Name$_.CreationTim" } } 但它不起作用。有什么想法吗?谢谢我注意到多个问题。最重要的是,您的newname值是{$\u0.Name-Rep

我想写一个函数,用当前名称和creatiomTime替换每个文件的名称。 这是我的职责:

Function RenameFolderFiles{
Param([String]$path)
Get-Childitem $path -Recurse | Rename-Item -NewName { $_.Name -Replace "$_.Name$_.CreationTim" }
}

但它不起作用。有什么想法吗?谢谢

我注意到多个问题。最重要的是,您的newname值是{$\u0.Name-Replace$\u0.Name$\u0.CreationTim}。-replace的语法是-replace'PatternToReplace',NewValue'。如果只定义了模式,如-replace“PatternToReplace”,则匹配的文本将被删除

假设文件名当前为File1.txt。这将永远不会与您的$\uName$\uCreationTime模式匹配,例如File1.txt23.01.2015 23.15.59,因此它将永远不会替换/修改名称,结果将是您的文件重命名为其当前名称

此外:

CreationTim缺少一个e 在$\名称$\创建即时消息中,您正在访问属性。要在字符串中包含属性的值,需要使用子表达式$like$$\.Name$$\.CreationTime,或者使用格式运算符,如{0}{1}-f$\.Name,$\.CreationTime 您使用-Recurse,这意味着您需要子文件夹。文件夹也将被重命名,当文件的路径不再存在时,重命名parentfolder可能会导致错误。 Name属性包含扩展名,因此如果您使用了-replace命令权限,那么File1.txt将变成File1.txt23.01.2015 23.15.59。没有扩展名的文件。要分别获取文件名和扩展名,请使用BaseName和extension属性 我想你要找的是:

Function RenameFolderFiles{
    Param([String]$path)

    Get-Childitem $path -Recurse |
    #Get files only
    Where-Object { !$_.PSIsContainer } |
    Rename-Item -NewName { "{0}{1}{2}" -f $_.BaseName, $_.CreationTime.ToString('ddMMyyyy-hhmmss'), $_.Extension }
}
演示:


CreationTim或CreationTime-typo?感谢您的回答,事实上,当我执行它时,我会收到以下错误:重命名项:无法重新命名为cible spécifiée,车辆报告是否符合设备名称。Au caractère Ligne:5:5+重命名项目-新名称{{{0}{1}{2}-f$$.BaseName、$.CreationTime、$.Extend…+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~,PSArgumentException+FullyQualifiedErrorId:Argument,Microsoft.PowerShell.Commands.RenameItemCommand脚本可以工作。您得到的错误是因为新文件名被解释为完整路径。您的文件名是否包含任何特殊字符?如果没有,则我猜您的区域设置将CreationTime作为som返回类似于01\02\2015…您需要为日期时间指定格式。您没有指定格式,所以我使用默认格式进行区域设置。请尝试更新答案。是的,您是对的,因为当我执行此命令Get ChildItem | select object Creationtime时,我会获得mm/dd/yyyy格式。我正在尝试修复它…这就是:Functionn Rename文件夹文件{Param[String]$path Get Childitem$path-Recurse |仅在对象{!$\uu.PSIsContainer}的位置获取文件| Rename Item-NewName{{{0}{1}{2}-f$\u0.BaseName,$\u0.CreationTime.ToStringdd-mm-yyyy,$\u0.Extension}重命名文件夹文件-路径D:\Music\Lessons
#Files before
Get-ChildItem -Recurse "C:\Users\Frode\Desktop" | Where-Object { !$_.PSIsContainer } | Select-Object -ExpandProperty FullName
C:\Users\Frode\Desktop\New Text Document - Copy (2).txt
C:\Users\Frode\Desktop\New Text Document - Copy.txt
C:\Users\Frode\Desktop\New Text Document.txt
C:\Users\Frode\Desktop\test\asd - Copy.txt
C:\Users\Frode\Desktop\test\asd.txt

#Create and run function
Function RenameFolderFiles{
    Param([String]$path)

    Get-Childitem $path -Recurse |
    #Get files only
    Where-Object { !$_.PSIsContainer } |
    Rename-Item -NewName { "{0}{1}{2}" -f $_.BaseName, $_.CreationTime.ToString('ddMMyyyy-hhmmss'), $_.Extension }
}

RenameFolderFiles -path "C:\Users\Frode\Desktop"

#Files after
Get-ChildItem -Recurse "C:\Users\Frode\Desktop" | Where-Object { !$_.PSIsContainer } | Select-Object -ExpandProperty FullName
C:\Users\Frode\Desktop\New Text Document - Copy (2)01022015-122544.txt
C:\Users\Frode\Desktop\New Text Document - Copy01022015-122543.txt
C:\Users\Frode\Desktop\New Text Document01022015-121535.txt
C:\Users\Frode\Desktop\test\asd - Copy01022015-122532.txt
C:\Users\Frode\Desktop\test\asd01022015-122531.txt