问题标签 [rename-item-cmdlet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1090 浏览

powershell - 基于文件内容的一行 PowerShell 批量重命名

我有一个包含特定文本的 EDI 文本文件列表。目前,为了让我们的自定义脚本将它们转换为 SQL 表,我们需要能够在文件名中看到 X12 文件类型。因为我们使用 SQL 脚本将文件放入表中,所以这个解决方案需要是一个单行解决方案。我们有一个客户端文件的定义表,其中指定了要查找的字段终止符和文件类型,因此我们稍后会将这些值替换为要单独执行的单行解决方案。我目前正在考虑使用 Powershell (v.3) 来实现最大的当前和未来兼容性。另外,我对 Powershell 完全陌生,我的脚本生成基于这个论坛上的帖子。

文件示例

  • t.text.oxf.20170815123456.out
  • t.text.oxf.20170815234567.out
  • t.text.oxf.20170815345678.out
  • t.text.oxf.20170815456789.out

搜索字符串以在文件中查找:(唯一查找 EDI X12 文件类型,同一文件内可能重复 n 次)

  • ST*867
  • ST*846
  • ST~867
  • ST~846
  • ST|867
  • ST|846

这是我到目前为止所拥有的,它没有显示自己对 whatif 参数做任何事情:

第一部分:

(Get-ChildItem .\ -recurse | Select-String -pattern 'ST~867' -SimpleMatch).Path

只需获取我们需要输入以重命名的路径列表

之后的第二部分| 管道:

Foreach -Begin {$i=1} -Process {Rename-Item -LiteralPath $_ -NewName ($_ -replace '\.out','.867.out' -f $i++) -whatif}

应该会循环遍历该列表并重命名文件,将 EDI 类型添加到文件末尾。我试过'out$','867.out'没有改变。

当前错误:

  • 第一部分显示重复的路径元素可能是因为文件中有多个事务集标头,有没有办法强制它是唯一的?
  • 该命令没有显示任何错误(红色文本),但使用 whatif 参数显示它没有重命名任何文件(也尝试在没有的情况下运行它)。
0 投票
2 回答
1331 浏览

powershell - Powershell - 重命名。在文件名中插入数字

我一直在尝试使用 Powershell 批量重命名文件夹目录。

我有许多格式为 ab_xxxxx_xxxxx_xxx 的文件夹(其中 x 是一个数字)我希望将其重命名为 ab_xxxxxxx_xxxxxxx_100xxx。

我尝试将 Rename Item 与 Replace 命令一起使用,它在每个 _ 之后添加 100

前任。Get-ChildItem -Path ab_ _ _* -Directory | ForEach-Object -Process { 重命名-Item -Path $ .Name -NewName ($ .Name -replace "_", "_100") }

我也尝试使用 * 通配符,但它只是将它添加到新文件夹名称中。

任何帮助将不胜感激

0 投票
5 回答
2719 浏览

powershell - 使用 PowerShell 将前导零添加到文件名字符串

我是使用 PowerShell 的新手,我想知道如何简单地填充几个相似文件名中包含的数字字符串,以使每个文件名中的位数相同。

也就是说,我有一个包含这 300 个文件的文件夹:

dummy name 1.txt通过dummy name 300.txt

并且只想将其中少于 3 位数字的文件重命名为全部具有 3 位数字,例如:

dummy name 001.txt通过dummy name 300.txt

0 投票
0 回答
28 浏览

regex - 用坏字符重命名文件

我不确定我在这里做错了什么,但是当我尝试Rename-Item使用新文件名时,我一直遇到一个错误,提示我要重命名的原始文件不存在。我的目标是从给定的文件名中删除多个“坏”字符。坏字符是[]<>:*,我目前只是在查看[]以确保它在添加其余字符之前有效。

代码示例:

0 投票
2 回答
867 浏览

string - 由于“(”或“)”而导致路径字符串错误的Powershell脚本替换字符

我编写了一个 Powershell 脚本,它接收 N 个字符,这些字符必须被用户的另一个给定字符替换。例如,用户想要替换 (, ) 和 -。用户通过此循环输入必须替换的字符:

然后用户通过以下代码输入替换字符:

然后我正在处理这些条目:

错误:如果用户输入类似 ( 或 ) 的内容,则脚本的最后一部分将失败,并显示以下错误代码:

我的解决方案:我试图使用[regex]::Escape()转义$char$newChar变量来修复括号错误。我还尝试通过用单引号和双引号将变量括起来来解决这个问题;但是,这可以防止发生实际的字符替换。我知道括号/特殊字符是导致问题的原因,我需要以某种方式转义它们;但是,[regex]::Escape() 解决方案会破坏字符匹配,最终不会替换用户输入的任何字符。

我的问题:如何成功转义 GCI cmdlet 中的$charand$newChar变量并仍然替换特殊字符,如 ( 或 )

0 投票
1 回答
406 浏览

powershell - Rename-Item :添加唯一的数字序列以防止重复的文件名

我需要一种方法来重命名目录中的文件,这会导致简单的Rename-Item. 文件需要相同的 10 位代码,后跟 4 位占位符(请仅提供数字)。

当前文件名:

考虑到上面的文件,用 a 重命名文件split(使用原始名称中的 4 位)会失败,因为会有同名的文件:

有没有人有想法解决这个问题?这 4 位数字可以是任何数字序列,但如果我们能让最终结果看起来像这样就更好了:

这是我当前的代码,它将重命名所有唯一文件和第一个重复文件,但在随后将成为重复名称的文件上出错:

0 投票
2 回答
569 浏览

powershell - Powershell,在解析和切换其名称的字符串后重命名目录

所以我试图将几个 level1 子文件夹从“xy_1234”重命名为“1234_xy”。到目前为止,我已经将字符串拆分为变量,构建新的目录名称并重命名目录,但是当我尝试在 for 循环中自动化该过程时,我完全失败了。请帮忙。

0 投票
1 回答
925 浏览

powershell - 如何使用 Powershell 重命名 IIS 网站目录(拒绝访问错误)

我正在尝试编写一个 powershell 部署脚本来停止网站,重命名一些目录,然后重新启动网站,但我被困在重命名部分。有时我可以重命名目录,但大多数时候我会收到“拒绝访问路径 'xxx'”。错误。我每次都需要这个脚本才能工作。

我以管理员身份运行,我正在使用 -Force,我什至在停止网站并重试后等待 10 秒。我检查了使用该目录的进程,只显示 w3wp.exe。(FWIW,发生这种情况时,我也无法通过文件资源管理器重命名目录 - “该操作无法完成,因为该文件夹已在另一个程序中打开。”)

相关代码:

$stagingPath 和 $tempPath 只是目录名,不是完整路径。它们绝对正确。

我错过了什么?我是否也需要明确停止应用程序池?

0 投票
2 回答
2472 浏览

powershell - 在powershell中重命名文件名的一部分

我有一个名为“Ben_sucksatpowershell_2018_07_13_21_22_07.txt”的文件名,我正在尝试将该文件重命名为“b.20180713.b”

对于我正在编写的脚本,我需要重命名一系列这些文件,并且新名称需要基于原始文件名中的原始 yyyy_MM_dd

我知道我可以替换文件名的一部分,但我不知道如何去除下划线,或执行多重替换,或在同一命令中重命名文件名。我对powershell还是新手。我一直找不到我要找的东西。我将不胜感激有关如何获得我想要的东西的指导。

0 投票
4 回答
2377 浏览

regex - 如何使用 Powershell 将文件名的前 7 个字符移动到末尾

我的公司有数百万份 pdf 格式的旧报告。它们通常以以下格式命名:2018-09-18 - ReportName.pdf

我们需要提交这些文件的组织现在要求我们以这种格式命名文件:Report Name - 2018-09.pdf

我需要将文件名的前 7 个字符移到末尾。我在想可能有一个简单的代码来执行此任务,但我无法弄清楚。谁能帮我。

谢谢!