我试图创建一个脚本,用通配符重命名与给定文件名匹配的文件。例如
我有一个包含以下文件的文件夹:
我想扫描这个文件夹,并追加当前时间到任何文件的开头以字'filename'开始
到目前为止,我有以下几点:
$d = Get-Date -format "yyyyMMddHHmm"
$dir = "C:\test"
$file = "filename*.log"
get-childitem -Path "$dir" | where-object { $_.Name -like "$file" } | rename-item -path $_ -newname $d."_".$_.name
但它不起作用。在我看来,各个部分应该从我对留档的阅读中工作,但显然有些不对劲。如果有人能指出这一点,将不胜感激。
我们越来越近了。似乎重命名项
部分中的-path
需要是$dir$\u
,因为$\u
似乎只包含文件名。(get help示例建议它必须是完整路径和文件名)
如果我取出rename item部分并将其替换为%{write host$d“\u”$\ u}
,它将给出正确的新文件名
但是,简单地将其放入重命名项
部分仍然不会更新文件名。
rename-item -path $dir$_ -newname $d"_"$_
成功
正确的语法似乎是:
get-childitem -Path "$dir" | where-object { $_.Name -like "$file" } | %{rename-item -path $dir$_ -newname $d"_"$_}
缺少的元素是%{...}
围绕着rename项目
部分,使我能够引用$_
另一种方法是不使用foreach或%,而是使用脚本块:
get-childitem -Path "$dir" -filter $file | rename-item -newname { $d + "_" + $_.name }
有关重命名项,请参见文档中的示例:https://msdn.microsoft.com/en-us/powershell/reference/3.0/microsoft.powershell.management/rename-item还有一个-replace操作符,但它不能使用通配符?哦,您不需要通配符:
get-childitem -Path "$dir" -filter $file | rename-item -newname { $_.name -replace 'filename',($d + '_filename') }
我不记得是PowerShell中的字符串串联运算符(我可能错了)。试试这个:
rename-item -path $_ -newname "$d_$($_.name)"
或者这个
rename-item -path $_ -newname ($d + "_" + $_.name)
甚至这个
rename-item -path $_ -newname ({0}_{1} -f $d,$_.name)
在这里看到答案
$d = Get-Date -format "yyyyMMddHHmm"
$dir = "C:\test"
$file = "filename*.log"
get-childitem -Path $dir | where-object { $_.Name -like $file } | %{ rename-item -LiteralPath $_.FullName -NewName "$d`_$($_.name)" }
假设错误与“无法将参数绑定到参数‘Path’”和NewName字符串有关,那么这应该是可行的。
问题包括:
您可以直接传递给重命名项,而不是将管道对象传递给
Foreach对象
——但是我不确定如何引用-NewName
参数的对象名称。
我有以下任务在我的 任务zipConfiguration(type:Zip){def myDir=project(':SomeProject').projectDir.toString()'/build/libs/'from myDir archiveName'Output.Zip'destinationDirectory=file($buildDir/libs”)} 项目的的将始终具有一个版本化
使用maven-clean插件,我想删除所有以“tmp”开头的文件夹。这是带有专家通配符的可能性吗?我试过: 这不起作用。
问题内容: 我一直在寻找一个命令,该命令将从当前目录返回文件名中包含字符串的文件。我已经看到和命令可以找到以某些内容开头或结尾的文件。 如何返回文件名中包含字符串的文件列表? 例如,if 是当前目录中的文件。 如何返回此文件和其他包含字符串的文件?使用诸如 问题答案: 用途: 它将在当前目录中找到所有包含“字符串”的文件(如果要递归,则删除),并将其打印在屏幕上。 如果要避免文件包含“:”,则可以
问题内容: 我有一个像这样的字符串: 基本上翻译为a ,我想将其替换为: 转换为。 用很多方法进行了尝试,但是它不起作用可能是因为以不同的方式使用了新行。我尝试了: …以及许多其他方式都没有结果。任何想法在这种情况下如何更换? 问题答案: 使用gawk尝试以下行: 如果要 处理新行,则必须先阅读整个文件:
问题内容: 我可以使用简单的通配符查询,如下所示: 但是,如果我想在字段中使用通配符,那又如何呢?应该如何看待有效查询: 问题答案: 您可以使用query_string,它允许使用字段名通配符和查询文本通配符。 这些线周围的东西:
问题内容: 我试图从数据库中选择多个列,但不是所有列。我要选择的所有列均以“ word”开头。 所以我想用伪代码做到这一点: 或多或少。我没有找到有关如何执行此操作的任何文档- MySQL中可能吗?基本上,我试图在一行中存储一个带有标识符的单词列表,并且当我提取记录时,我想将所有单词与该标识符关联。所有单词都将作为字符串连接在一起,并带有其标识符传递给数组/字典中的另一个函数。 我正在尝试进行FE