Войти

Показать полную графическую версию : [решено] Переименовать разные имена


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

Iska
01-06-2014, 23:29
По каким принципам определять «одинаковые строки»? Ибо предлагаемые Вами:
DOC1, DOC2 и т.д. »
тоже являются документами, «начинающимися с одинаковых строк».

Valek271183
01-06-2014, 23:43
DOC1, DOC2 это имена которыми должны будут называться документы, и не важно кому какое присвоится имя

firstarey
02-06-2014, 07:37
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
Valek271183, вопрос был по поводу:
начинающиеся с одинаковых строк »
Либо Вы некорректно ставите задачу.

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

firstarey
02-06-2014, 09:51
не хватает обработки ситуации, когда какие-то из «DOCXX.ext» уже наличествуют в папке. »
ну задача описана весьма кратко. я её понял следующим образом:
есть каталог в котором содержаться документы начинающиеся с одинаковых строк: Накладная приёмки Васи, Накладная приёмки Пети »
и их необходимо переименовать в 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
Iska, DOС ещё не существует, нужно преименовать существующие документы в DOC к которому будет добавляться номер начиная с единицы, и сколько будет документов столько и будет файлов DOC со своим номером на конце (Например Накладная приёмки Васи станет DOC1, Накладная приёмки Пети станет DOC2, Накладная приёмки Феди станет DOC3 и т.д. )

firstarey
02-06-2014, 12:55
DOС ещё не существует, нужно преименовать существующие документы в DOC »
тогда пожалуйста - смотрим 4 (http://forum.oszone.net/post-2358747-4.html) сообщение

Valek271183
02-06-2014, 13:32
firstarey, это можно сделать с помощью командной строки? »

firstarey
02-06-2014, 14:33
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
меняете разрешение файла »
Коллега, очевидно, Вы имели ввиду "расширение файла". ;)

firstarey
03-06-2014, 08:26
gora, ну да :) время было к вечеру.. спасибо за внимательность




© OSzone.net 2001-2012