首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMD "Rename“命令

CMD "Rename“命令
EN

Stack Overflow用户
提问于 2020-08-12 18:02:36
回答 2查看 33关注 0票数 0

我想从文件夹中的每个".pdf“文件中删除前21个字符。

我的命令:

代码语言:javascript
复制
rename "*.pdf" "/////////////////////*.pdf"

问题仍然存在:第一个文件被重命名了两次。删除前42个字符。其他文件被正确重命名(21)。

EN

回答 2

Stack Overflow用户

发布于 2020-08-12 22:49:19

此命令可以做到这一点,但有许多未检测到的陷阱。如果文件名不超过21个字符,该怎么办?如果NewName与现有文件名重复,该怎么办?

代码语言:javascript
复制
powershell -NoLogo -NoProfile -Command ^
    "Get-ChildItem .\*.pdf |" ^
        "ForEach-Object { Rename-Item -Path $_.FullName -NewName $($_.Name[21..($_.Name.Length)] -join '') -WhatIf }"
票数 0
EN

Stack Overflow用户

发布于 2020-08-12 23:05:34

问题是,在此过程中,文件掩码*.pdf可能会使用新创建的文件进行“更新”。

对于一个简单的for %%a in (*.pdf)循环也是如此。

要解决此问题,请确保在rename执行其操作之前生成文件列表:

代码语言:javascript
复制
for /f "delims=" %%a in ('dir /b *.pdf') do rename "%%a" "/////////////////////*.pdf"

只有在(...)部分完成之后,才会执行do部分,因此不会再次处理新创建/更改的文件。

与lit的答案相同的陷阱也适用:

如果文件名不超过21个字符,该怎么办?

如果NewName与现有文件名重复,该怎么办?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63374205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档