Компьютерный форум 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=182778)

Pshek 12-08-2010 17:57 1472322

Переименование, если файл с таким именем уже существует...
 
В папке "MAIL" время от времени появляется файл "Post.zip", после чего он автоматически отправляется и после отправки копируется в папку "SentMail" и каждый следующий автоматически заменяет предидущий... Как сделать, чтобы файл не заменялся, а переименовывался, например добавлялся номер по порядку...

Например: Post.zip
Post_2.zip
Post_3.zip

Отправку и перемещени выполняет DOS-вертушка, параметры которой и записываются в bat-файле


Заранее спасибо =)

gora 12-08-2010 18:14 1472332

Цитата:

Цитата Pshek
файл не заменялся, а переименовывался, например добавлялся номер по порядку... »

Код:

@Echo Off
Set input=MAIL
Set output=SentMail
Set cn=
:_loop
If Exist "%output%\Post%cn%.zip" Set /a cn+=1& Goto _loop
Copy "%input%\Post.zip" "%output%\Post%cn%.zip">Nul


Pshek 12-08-2010 18:21 1472336

Списибо...

Pshek 12-08-2010 19:00 1472361

А если, к примеру, есть с десяток разных по имени файлов, но у каждого из них таже история???

gora 12-08-2010 19:17 1472376

Цитата:

Цитата Pshek
есть с десяток разных по имени файлов, но у каждого из них таже история »

Т.е., в папке MAIL есть файлы с разными именами и расширениями и все эти файлы нужно скопировать по тому же принципу в папку SentMail? Или не все нужно копировать, то кто должен определить какие нужно копировать, а какие нет?

Или этот десяток имен фиксированный?

Pshek 12-08-2010 19:29 1472386

Копировать нужно все...
Цитата:

Цитата gora
Или этот десяток имен фиксированный? »

В основном да, но иногда встречаются незнакомые или редко употребляемые...

gora 12-08-2010 19:42 1472393

Код:

@Echo Off
Set input=MAIL
Set output=SentMail
For /F "UseBackQ Delims=" %%I In (`Dir "%input%" /B 2^>Nul`) Do Call :_copyF "%%I"
Exit
:_copyF
Set cn=
:_loop
If Exist "%output%\%~n1%cn%%~x1" Set /a cn+=1& Goto _loop
Copy "%input%\%~1" "%output%\%~n1%cn%%~x1">Nul
GoTo :EOF


Pshek 12-08-2010 19:44 1472396

Спасиб =)

Цитата:

Цитата gora
@Echo Off
Set input=MAIL
Set output=SentMail
For /F "UseBackQ Delims=" %%I In (`Dir "%input%" /B 2^>Nul`) Do Call :_copyF "%%I"
Exit
:_copyF
Set cn=
:_loop
If Exist "%output%\%~n1%cn%%~x1" Set /a cn+=1& Goto _loop
Copy "%input%\%~1" "%output%\%~n1%cn%%~x1">Nul
GoTo :EOF »

Блин, упустил один момент... Нужно, чтобы вышеуказанные действия проходили только с архивами.

gora 12-08-2010 19:53 1472403

Цитата:

Цитата Pshek
только с архивами »

Какими? Какое расширение у файла архива?

Pshek 12-08-2010 20:03 1472409

Цитата:

Цитата gora
Какими? Какое расширение у файла архива? »

zip и rar

gora 12-08-2010 20:20 1472425

Код:

@Echo Off
Set input=MAIL
Set output=SentMail
Set ext=rar zip

For /F "UseBackQ Delims=" %%I In (`Dir "%input%" /B 2^>Nul`) Do For %%K In (%ext%) Do If /I "%%~xI"==".%%K" Call :_copyF "%%I"
Exit
:_copyF
Set cn=
:_loop
If Exist "%output%\%~n1%cn%%~x1" Set /a cn+=1& Goto _loop
Copy "%input%\%~1" "%output%\%~n1%cn%%~x1">Nul
GoTo :EOF


Pshek 13-08-2010 11:12 1472730

Спасибо...

akel 05-09-2012 12:39 1983434

Переименование файлов по порядку
http://tool-bar.ru/renamefiles.html
попробуй этой программкой

ospekt00 30-07-2018 13:12 2824006

Добрый день, подскажите по данному скрипту:

Код:

@Echo Off
Set input=MAIL
Set output=SentMail
For /F "UseBackQ Delims=" %%I In (`Dir "%input%" /B 2^>Nul`) Do Call :_copyF "%%I"
Exit
:_copyF
Set cn=
:_loop
If Exist "%output%\%~n1%cn%%~x1" Set /a cn+=1& Goto _loop
Copy "%input%\%~1" "%output%\%~n1%cn%%~x1">Nul
GoTo :EOF

Как сделать что бы после копирования в директорию output целевой файл из input удалялся, либо чтобы после всего копирования директория input чистилась? Заранее спасибо.

Iska 30-07-2018 15:36 2824017

Цитата:

Цитата ospekt00
Как сделать что бы после копирования в директорию output целевой файл из input удалялся »

Код:


If Exist "%output%\%~n1%cn%%~x1" Set /a cn+=1& Goto _loop
Copy "%input%\%~1" "%output%\%~n1%cn%%~x1">Nul && del /f /q "%input%\%~1"
GoTo :EOF


ospekt00 30-07-2018 15:51 2824021

Спасибо, все получилось


Время: 07:24.

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