我有目录,其中有很多拉链。
都有不同的软件名称,这些软件都是随时间而获得的。
例如:
Software1_ABCDE-FGHIJ.zip
Software2_256SS-BM42.zip
Software3_aswdfbbgtyyn.zip我想使用批处理/powershell或bash将它们全部重命名为
例如:
Software1.zip
Software2.zip
Software3.zip基本上,在.zip之后和之前的任何东西都需要去,但它的所有随机内容.基本上是串行密钥。我在服务器上创建的php下载器的名称很长,其他功能也需要限制,所以我需要重命名1000次zip。
我已经有一个for循环,可以将dir中的所有文件/文件夹压缩到bash中的zip中。
for i in */; do zip -r "${i%/}.zip" "$i"; done我已经有了这个bash,它将.exe从.zip之前的任何文件名中删除
rename.ul '.exe' '' *.zip例如:
file1_23434434.exe.zip 变成了
file1_23434434.zip如何将我的所有拉链重命名从软件1_串行-这里-1234.zip到软件1.zip
保留软件的原始zip名称和.zip扩展
发布于 2019-01-16 10:53:29
由于您也使用powershell标记了您的问题,所以这将是PowerShell的方法:
Get-ChildItem -Filter *.zip | Rename-Item -NewName { $_.Name -replace "_.*", ".zip" }使用批处理类别名的短版本:
dir -filter *.zip | ren -new { $_.name -replace "_.*", ".zip" }发布于 2019-01-16 11:00:19
在Windows命令提示符窗口中,运行在包含ZIP文件的目录中:
for /F "tokens=1* delims=_ eol=" %I in ('dir *_*.zip /A-D-H /B 2^>nul') do ren "%I_%J" "%I.zip"在存储在包含ZIP文件的目录中的批处理文件中:
@for /F "tokens=1* delims=_ eol=" %%I in ('dir "%~dp0*_*.zip" /A-D-H /B 2^>nul') do ren "%~dp0%%I_%%J" "%%I.zip"如果在软件名称之后有多个下划线,而不仅仅是一个_,或者软件名以一个或多个下划线开头,则需要使用两个来对循环重新命名所有*_*.zip文件:
@for /F "delims= eol=" %%I in ('dir "%~dp0*_*.zip" /A-D-H /B 2^>nul') do @for /F "delims=_ eol=" %%J in ("%%I") do ren "%~dp0%%I" "%%J.zip"循环变量I的外部为保存完整的文件名ZIP文件扩展名,但没有文件路径,而循环变量J的内for循环只保留文件名部分之前的第一个下划线。J还删除了文件名开头的所有下划线。因此__SoftwareX__Y.zip被重命名为SoftwareX.zip。
要了解所使用的命令及其工作方式,请打开命令提示符窗口,在那里执行以下命令,并非常仔细地读取为每个命令显示的所有帮助页。
call /? ...解释%~dp0 ..。参数0的驱动器和路径,这是批处理文件路径,始终以反斜杠结尾。dir /?for /?ren /?发布于 2019-01-16 10:57:11
Get-ChildItem -Path C:\temp -Filter software* -File |
Rename-Item -NewName { ($_.BaseName -split '_')[0] + $_.Extension } -WhatIf删除-whatif以应用该操作。-whatif是用于预览的。
这假设您要重命名的所有文件都以word software开头,并且文件名中只有一个_。
https://stackoverflow.com/questions/54215170
复制相似问题