问题标签 [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.
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 参数显示它没有重命名任何文件(也尝试在没有的情况下运行它)。
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") }
我也尝试使用 * 通配符,但它只是将它添加到新文件夹名称中。
任何帮助将不胜感激
powershell - 使用 PowerShell 将前导零添加到文件名字符串
我是使用 PowerShell 的新手,我想知道如何简单地填充几个相似文件名中包含的数字字符串,以使每个文件名中的位数相同。
也就是说,我有一个包含这 300 个文件的文件夹:
dummy name 1.txt
通过dummy name 300.txt
并且只想将其中少于 3 位数字的文件重命名为全部具有 3 位数字,例如:
dummy name 001.txt
通过dummy name 300.txt
regex - 用坏字符重命名文件
我不确定我在这里做错了什么,但是当我尝试Rename-Item
使用新文件名时,我一直遇到一个错误,提示我要重命名的原始文件不存在。我的目标是从给定的文件名中删除多个“坏”字符。坏字符是[]<>:*
,我目前只是在查看[]
以确保它在添加其余字符之前有效。
代码示例:
string - 由于“(”或“)”而导致路径字符串错误的Powershell脚本替换字符
我编写了一个 Powershell 脚本,它接收 N 个字符,这些字符必须被用户的另一个给定字符替换。例如,用户想要替换 (, ) 和 -。用户通过此循环输入必须替换的字符:
然后用户通过以下代码输入替换字符:
然后我正在处理这些条目:
错误:如果用户输入类似 ( 或 ) 的内容,则脚本的最后一部分将失败,并显示以下错误代码:
我的解决方案:我试图使用[regex]::Escape()
转义$char
和$newChar
变量来修复括号错误。我还尝试通过用单引号和双引号将变量括起来来解决这个问题;但是,这可以防止发生实际的字符替换。我知道括号/特殊字符是导致问题的原因,我需要以某种方式转义它们;但是,[regex]::Escape() 解决方案会破坏字符匹配,最终不会替换用户输入的任何字符。
我的问题:如何成功转义 GCI cmdlet 中的$char
and$newChar
变量并仍然替换特殊字符,如 ( 或 )
powershell - Rename-Item :添加唯一的数字序列以防止重复的文件名
我需要一种方法来重命名目录中的文件,这会导致简单的Rename-Item
. 文件需要相同的 10 位代码,后跟 4 位占位符(请仅提供数字)。
当前文件名:
考虑到上面的文件,用 a 重命名文件split
(使用原始名称中的 4 位)会失败,因为会有同名的文件:
有没有人有想法解决这个问题?这 4 位数字可以是任何数字序列,但如果我们能让最终结果看起来像这样就更好了:
这是我当前的代码,它将重命名所有唯一文件和第一个重复文件,但在随后将成为重复名称的文件上出错:
powershell - Powershell,在解析和切换其名称的字符串后重命名目录
所以我试图将几个 level1 子文件夹从“xy_1234”重命名为“1234_xy”。到目前为止,我已经将字符串拆分为变量,构建新的目录名称并重命名目录,但是当我尝试在 for 循环中自动化该过程时,我完全失败了。请帮忙。
powershell - 如何使用 Powershell 重命名 IIS 网站目录(拒绝访问错误)
我正在尝试编写一个 powershell 部署脚本来停止网站,重命名一些目录,然后重新启动网站,但我被困在重命名部分。有时我可以重命名目录,但大多数时候我会收到“拒绝访问路径 'xxx'”。错误。我每次都需要这个脚本才能工作。
我以管理员身份运行,我正在使用 -Force,我什至在停止网站并重试后等待 10 秒。我检查了使用该目录的进程,只显示 w3wp.exe。(FWIW,发生这种情况时,我也无法通过文件资源管理器重命名目录 - “该操作无法完成,因为该文件夹已在另一个程序中打开。”)
相关代码:
($stagingPath 和 $tempPath 只是目录名,不是完整路径。它们绝对正确。)
我错过了什么?我是否也需要明确停止应用程序池?
powershell - 在powershell中重命名文件名的一部分
我有一个名为“Ben_sucksatpowershell_2018_07_13_21_22_07.txt”的文件名,我正在尝试将该文件重命名为“b.20180713.b”
对于我正在编写的脚本,我需要重命名一系列这些文件,并且新名称需要基于原始文件名中的原始 yyyy_MM_dd
我知道我可以替换文件名的一部分,但我不知道如何去除下划线,或执行多重替换,或在同一命令中重命名文件名。我对powershell还是新手。我一直找不到我要找的东西。我将不胜感激有关如何获得我想要的东西的指导。
regex - 如何使用 Powershell 将文件名的前 7 个字符移动到末尾
我的公司有数百万份 pdf 格式的旧报告。它们通常以以下格式命名:2018-09-18 - ReportName.pdf
我们需要提交这些文件的组织现在要求我们以这种格式命名文件:Report Name - 2018-09.pdf
我需要将文件名的前 7 个字符移到末尾。我在想可能有一个简单的代码来执行此任务,但我无法弄清楚。谁能帮我。
谢谢!