У меня есть 9873 файлов в папке на жестком диске, которые называются

  • myname-script.sql.001
  • myname-script.sql.002
  • и так далее

Теперь мне нужно переименовать эти файлы в

  • myname-script.001.sql
  • myname-script.002.sql
  • и так далее

Я хочу назвать их всех сразу через командную строку.

4 ответа4

1

что ты уже испробовал? Вы должны действительно провести исследование возможных решений и попробовать несколько вещей.

Я также думаю, что этот вопрос может быть лучше подходит для 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
1

Вы можете использовать vbscript для переименования

Установите fso = CreateObject("Сценарии.FileSystemObject ")

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

за каждый офис в офлдр.файлы

разделить = разделить (ofile.Имя, ".", -1, 1)

ofile.name = split (0) & "." & split (2) & "." & разделены (1)

следующий

Этот скрипт разделит ваше имя файла через . а затем переставить его, чтобы поменять местами 2-е и 3-е расширение

1

Все просто, как чистый 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"
-2

Вы можете использовать цикл и некоторую стратегию вырезания и вставки, например:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .