Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Переименовать разные имена (http://forum.oszone.net/showthread.php?t=283009)

Valek271183 01-06-2014 23:01 2358670

Переименовать разные имена
 
Нужно переименовать документы начинающиеся с одинаковых строк: Накладная приёмки Васи, Накладная приёмки Пети и т д. и переименовать их в DOC1, DOC2 и т.д. Как это можно сделать с помощью командной строки?

Iska 01-06-2014 23:29 2358678

По каким принципам определять «одинаковые строки»? Ибо предлагаемые Вами:
Цитата:

Цитата Valek271183
DOC1, DOC2 и т.д. »

тоже являются документами, «начинающимися с одинаковых строк».

Valek271183 01-06-2014 23:43 2358684

DOC1, DOC2 это имена которыми должны будут называться документы, и не важно кому какое присвоится имя

firstarey 02-06-2014 07:37 2358747

Valek271183, могу предложить решение на PowerShell:
Код:

# http://forum.oszone.net/thread-283009.html
$Files = Get-ChildItem * -Include "*.xml"
ForEach ($SourceFile in $Files) {
        $NamePlus++
        Rename-Item "$SourceFile" "DOC$NamePlus.xml"
}
Write-Host "обработано файлов: `t $NamePlus"
Read-Host "нажмите Enter для выхода"

для примера я использовал файлы xml с произвольными именами.
при необходимости расширение изменяется во 2 и 5 строках

Iska 02-06-2014 08:04 2358751

Valek271183, вопрос был по поводу:
Цитата:

Цитата Valek271183
начинающиеся с одинаковых строк »

Либо Вы некорректно ставите задачу.

firstarey, не хватает обработки ситуации, когда какие-то из «DOCXX.ext» уже наличествуют в папке.

firstarey 02-06-2014 09:51 2358773

Цитата:

Цитата Iska
не хватает обработки ситуации, когда какие-то из «DOCXX.ext» уже наличествуют в папке. »

ну задача описана весьма кратко. я её понял следующим образом:
есть каталог в котором содержаться
Цитата:

Цитата Valek271183
документы начинающиеся с одинаковых строк: Накладная приёмки Васи, Накладная приёмки Пети »

и их необходимо переименовать в
Цитата:

Цитата Valek271183
DOC1, DOC2 и т.д. »

вот с учетом Вашего замечания. но думаю в данном случае дорабатывать можно долго не зная конечной цели.
Код:

# http://forum.oszone.net/thread-283009.html
$Files = Get-ChildItem * -Include "*.xml"
ForEach ($SourceFile in $Files) {
        if ($($SourceFile.name).Substring(0,3) -ne "Doc") {
                $NamePlus++
                $RenamePlus++
                Rename-Item "$SourceFile" "DOC$NamePlus.xml"
        } else {$NamePlus++}
}
Write-Host "обработано файлов: `t $NamePlus"
Write-Host "из них переименовано: `t $RenamePlus"
Read-Host "нажмите Enter для выхода"


Valek271183 02-06-2014 12:13 2358835

Iska, DOС ещё не существует, нужно преименовать существующие документы в DOC к которому будет добавляться номер начиная с единицы, и сколько будет документов столько и будет файлов DOC со своим номером на конце (Например Накладная приёмки Васи станет DOC1, Накладная приёмки Пети станет DOC2, Накладная приёмки Феди станет DOC3 и т.д. )

firstarey 02-06-2014 12:55 2358850

Цитата:

Цитата Valek271183
DOС ещё не существует, нужно преименовать существующие документы в DOC »

тогда пожалуйста - смотрим 4 сообщение

Valek271183 02-06-2014 13:32 2358872

firstarey,
Цитата:

Цитата Valek271183
это можно сделать с помощью командной строки? »


firstarey 02-06-2014 14:33 2358901

Valek271183, можно:

Код:

@echo off
Color 0e
rem http://forum.oszone.net/thread-283009.html
set Ext=xml
for %%i in ("*.%Ext%") do set /a NamePlus+=1
echo файлов найдено:        %NamePlus%
ping -n 2 localhost>nul
:gogo
CLS
if
"%RenamePlus%"=="%NamePlus%" pause& exit
for
%%i in ("*.%Ext%") do set SourceFile=%%~i
echo файл обрабатываем:        %SourceFile%
ping -n 1 localhost>nul
set
/a RenamePlus+=1
ren "%SourceFile%" "DOC%RenamePlus%.xml"
goto :gogo

в строке 4 меняете расширение файла на свое

gora 02-06-2014 21:44 2359122

Цитата:

Цитата firstarey
меняете разрешение файла »

Коллега, очевидно, Вы имели ввиду "расширение файла". ;)

firstarey 03-06-2014 08:26 2359233

gora, ну да :) время было к вечеру.. спасибо за внимательность


Время: 07:15.

Время: 07:15.
© OSzone.net 2001-