我硬盘上的文件夹中有 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