通过命令行按顺序重命名多个文件

通过命令行按顺序重命名多个文件

我硬盘上的文件夹中有 9873 个文件,这些文件被命名为

  • myname-script.sql.001
  • myname-script.sql.002
  • 等等

现在我需要将这些文件重命名为

  • myname-script.001.sql
  • myname-script.002.sql
  • 等等

我想通过命令行一次性命名它们。

答案1

您可以使用 vbscript 重命名

设置 fso = CreateObject("Scripting.FileSystemObject")

设置 oFldr = fso.getfolder("C:\file\path")

对于 oFldr.Files 中的每个 ofile

splited = Split(ofile.名称, “.”, -1, 1)

ofile.name = splited(0) & "." & splited(2) & "." & splited(1)

下一个

该脚本将通过分割文件名.,然后重新排列以交换第二个和第三个扩展名

答案2

到目前为止您尝试过什么?您应该真正研究一下可能的解决方案并尝试一些方法。

我也认为这个问题可能更适合StackOverflow.无​​论如何,我修改了VBScript我之前写的一个,它可以实现你想要的。我是一个 VBScript 新手,所以请原谅它的冗长。我相信有一个更优雅的解决方案,但它确实有效。该脚本假定文件将按顺序出现,因此您可能会遇到一些问题。

我已通过我的Google Drive帐户提供该脚本:

https://docs.google.com/file/d/0B-7FwCWf15oGd2R0R1RMaHdmRFk/edit?usp=sharing

您只需更改文件路径即可使脚本正常工作。VBScript文件不起作用时的代码如下:

Dim sName
Dim fso
Dim folder
Dim count
count = 1

Set fso = WScript.CreateObject("Scripting.FileSystemObject")

Set folder = fso.GetFolder("Your folder path")

For Each file In folder.Files   
    If count < 10 Then
        file.Name = "myname-script.00" + CStr(count) + ".sql"
    End If

    If count > 9 And count < 100 Then
        file.Name = "myname-script.0" + CStr(count) + ".sql"
    End If

    If count > 99 And count < 10000 Then
        file.Name = "myname-script." + CStr(count) + ".sql"
    End If
    count = count + 1
Next

答案3

非常简单,就像纯cmd.exe(批处理)一样。我还没有测试过,但我认为我做对了。

作为命令行中的一个长行:

for /f "eol=: delims=" %A in ('dir /b /a-d *.sql*^|findstr "\.sql\.[^.]*$"') do @for %B in ("%~nA") do @ren "%A" "%~nB%~xA%~xB"

作为批处理文件:

@echo off
for /f "eol=: delims=" %%A in (
  'dir /b /a-d *.sql*^|findstr "\.sql\.[^.]*$"'
) do for %%B in ("%%~nA") do ren "%%A" "%%~nB%%~xA%%~xB"

答案4

您可以使用循环和一些剪切和粘贴策略,如下所示:

for i in `ls myname-script.sql.*` ; do j=`ls $i | cut -d '.' -f2` ; k=`ls $i | cut -d '.' -f3` ; mv $i myname-script.$k.$j ; done

相关内容